kitJoin:KIT 資料處理工具

把多個波次的調查資料(CSV 或 SPSS 的 .sav 檔)接在一起,不用寫程式:

每一步都會自動核對列數與欄位數,並用白話說明「誰被留下、誰被排除」。適用於 KIT 資料,也適用於其他任何多波次資料。

先選:本機版還是雲端版?

本機版(方法 1、2) 雲端版(方法 3)
資料存放 只在您的電腦上處理,不會上傳 上傳到位於美國的 Posit 伺服器處理
適合的資料 所有資料,包含含個資或受 IRB 限制的資料 已去識別化的資料
需要安裝 需要安裝 R(免費) 不用安裝,開瀏覽器即可
檔案大小 單檔 500 MB 單檔 500 MB,大檔案較慢

不確定時,請用本機版。

安裝與啟動

方法 1:Windows 一鍵啟動(不用寫程式)

  1. 先安裝 R(已經裝過可跳過):到 https://cran.csie.ntu.edu.tw/ 下載「Download R for Windows → base」,安裝時一路按「下一步」即可。
  2. 下載 kitJoin:在本頁右側的 Releases 點最新版本,在 Assets 底下下載 Source code (zip)。
  3. 解壓縮:在下載的 zip 檔上按右鍵 →「內容」→ 勾選「解除封鎖」→ 確定,再按右鍵 →「全部解壓縮」。
  4. 啟動:打開解壓縮後的資料夾,雙擊 run.bat(可能只顯示為 run)。
    • 如果出現「Windows 已保護您的電腦」,請按「其他資訊」→「仍要執行」。
  5. 第一次啟動會自動安裝需要的套件,約 3–10 分鐘,需要網路。完成後瀏覽器會自動開啟 kitJoin。
  6. 使用期間不要關閉黑色視窗;用完直接關閉黑色視窗即可結束。

啟動失敗時,黑色視窗會顯示錯誤,原因也會記錄在資料夾裡的 kitjoin_log.txt。請把它的內容貼到 GitHub Issues 回報。

方法 2:在 R 裡安裝(Windows / Mac / Linux)

Mac 與 Linux 使用者請用這個方法。 建議使用 R 4.2 以上版本(R 下載)。

打開 R 或 RStudio,在 Console(主控台)貼上下面的指令並按 Enter。

  1. 安裝 kitJoin(只需要做一次):

    install.packages("pak")
    # pak::pkg_install("jiewenTsai/kitJoin")
    install.packages("kitJoin", repos = c('https://jiewentsai.r-universe.dev', 'https://cloud.r-project.org'))
    

    pak 會順便把版本太舊的套件更新到 kitJoin 需要的版本(例如 bslib 要 0.11.0 以上)。

    如果 pak 安裝失敗,可以改用(upgrade = "always" 才會更新太舊的套件):

    install.packages("remotes")
    remotes::install_github("jiewenTsai/kitJoin", upgrade = "always")
    

    打開時說「bslib 版本太舊」:在 R 執行 install.packages("bslib"),再重新開啟。

  2. 啟動(每次使用時執行):

    kitJoin::run_kitjoin()
    

瀏覽器會自動開啟 kitJoin。用完後回到 R 按 Esc(或 RStudio 的紅色停止鈕)即可結束。

方法 3:雲端版(Posit Connect Cloud)

免安裝,直接以瀏覽器開啟:(網址待部署後補上)

[!WARNING] 上傳的資料會傳送到 Posit Connect Cloud 位於美國的伺服器處理。含個資或受 IRB 限制的資料,請改用本機版。使用前請先閱讀本頁最下方的雲端版使用須知。

用範例資料試一次

inst/extdata/ 資料夾裡有三個假資料檔(example_t1.csv、example_t2.csv、example_t3.csv),包含中文、遺漏值代碼 9999,以及有人在後期沒有繼續參加。

  1. 在「① 上傳檔案」按「選擇檔案…」,一次選取三個範例檔。波次名稱會自動填 t1、t2、t3。
  2. 到「②(選用)遺漏值轉 NA」按「執行轉換」,9999 和 7777 會變成遺漏值。
  3. 到「③ 寬格式串接」,ID 欄位選 release_id,保留方式選「向後追蹤樣本」,按「執行串接」。
  4. 看「結果摘要」:會說明第 1 波 6 人中,誰在後面的波次有資料、誰沒有。
  5. 按「下載 CSV」或「下載 SAV」取得結果。

各分頁在做什麼

分頁 做什麼 你需要做的事
① 上傳檔案 加入各波次的檔案、取波次名稱、預覽 選檔案 → 確認波次名稱(t1、t2…)與順序
②(選用)遺漏值轉 NA 把 7777、9999 等代碼改成遺漏值;③~⑦ 沿用處理後的資料 確認代碼與不處理的欄位 → 執行轉換 → 下載處理後的檔案(只改遺漏值時到這裡就完成)
③ 寬格式串接 每人一列,各波變項並排 選 ID 欄位與保留方式 → 執行串接 → 下載
④ 長格式疊加 每人每波一列,加上 wave 欄 執行疊加 → 下載
⑤ 流失樣本 標記前期的人在後期是否還在 選前期、後期與 ID 欄位 → 建立 → 下載
⑥ 轉成 kits 作答檔 寬格式(一題一欄)→ kits 的長格式作答檔 (有遺漏值代碼時先到 ②)→ 填世代 → 確認欄位對應 → 題目設定(領域、排除、計分對照)→ 執行轉換 → 下載 .csv.gz
⑦ 長寬互轉 一個檔案長轉寬或寬轉長 選檔案與方向 → 設定欄位 → 執行轉換 → 下載
⑧ 檔案格式轉換 一個檔案轉成另一種格式(與其他分頁無關) 選檔案 → 選格式 → 開始轉換 → 下載

每個分頁最下方的「用 R 怎麼做?」會依您的設定產生對應的 R 程式碼(tidyverse 版與 base R 版;⑥⑦ 只有 tidyverse 版,⑧ 沒有),方便學習或寫進論文的方法說明。

轉成 kits 作答檔:要準備什麼?

多個檔案會合併成一個作答檔。 只要一個波次或一個領域時,請在 ① 只上傳那一個檔案。

輸出固定 9 欄,名稱、順序與型別和 kits 的示範資料相同:

欄位 必填 從哪裡來
visit_id 是 自動組成 {cohort}_{subj_id}_{波次標籤}(例如 M03_K0001_m03g01);沒有波次標籤時改用 wave_m,畫面會提醒
subj_id 否 對應孩子編號欄(例如 release_id)
cohort 是 每個檔案自己填(例如 M03),或選世代所在的欄;不會從檔名猜
sex 否 對應性別欄,或每個檔案自己填
wave_m 是 對應波次(月)欄,或每個檔案自己填(例如 18)
age_m 否 對應實際月齡欄,或每個檔案自己填
item_id、item_score 是 題目欄的欄名與分數
domain 是 「3. 題目設定」:選取題目後按「設領域」,或上傳題目表(item_id、domain 兩欄)

長寬互轉:設定怎麼對應 tidyr?

「⑦ 長寬互轉」只要 1 個檔案。每個控制項旁邊都標了對應的 tidyr 參數名,預設值也和 tidyr 相同。

選好檔案後,⑦ 會先看一下資料。同一個 ID 有好幾列,提示「看起來是長格式」。每個 ID 一列、又有成組的題目欄(例如 lan01~lan10),提示「看起來是寬格式」。用哪一欄當 ID 可以自己改。選的方向和提示相反時,執行鈕旁會出現提醒;不會擋,也不會自動換方向。

寬轉長(pivot_longer())

控制項 tidyr 參數
要轉成長格式的欄 cols:挑要轉的欄,或挑不轉的欄(例如 id、性別)、其餘全部轉
原本的欄名放到哪一欄 names_to
原本的值放到哪一欄 values_to
欄名要去掉的開頭(進階) names_prefix
從欄名取出部分的規則(進階) names_pattern
去掉空白的值(進階) values_drop_na

要轉的欄全部用點的,不用打欄名規則。下拉選單下面有「全選」「清除」和「lan 開頭(10 欄)」這類按鈕,一次加入一組欄,旁邊即時顯示「會轉 N 欄,保留 M 欄不動」。「用 R 怎麼做?」會照選法寫成 !c(id, sex)、starts_with("lan") 或逐欄列出。

長轉寬(pivot_wider())

控制項 tidyr 參數
哪些欄是 id id_cols(預設:其餘全部欄位)
新欄名來自哪一欄 names_from
要攤開的值 values_from
欄名格式(進階) names_glue,或 names_sep/names_prefix
欄位排列(進階) names_vary:fastest 或 slowest
缺的格子填什麼(進階) values_fill

長轉寬前會先檢查:

kitsUI 分數表(一列 = 一次施測 × 一個領域)會多一個「套用 kitsUI 分數表預設」按鈕。它只填好設定,不會自動執行:

多攤開 scale 是為了分辨空白的 d_score:沒有這個領域的列(scale_motor 也空白),還是有測但還沒放上 D 量尺(例如 scale_motor 是 motor M36)。結果頁的「空白格從哪裡來?」表會分別算出這兩種情況。

檔案格式轉換(⑧)

匯入 CSV、CSV.GZ 或 SPSS(.sav)檔,轉成另外兩種格式之一。一次一個檔案,轉完直接下載。

匯入 可以轉成
CSV(.csv) CSV.GZ、SPSS
CSV.GZ(.csv.gz、.gz) CSV、SPSS
SPSS(.sav) CSV、CSV.GZ

寬格式串接:要保留哪些人?

假設第 1 波有 A、B、C 三人,第 2 波有 B、C、D 三人:

選項 結果留下
向後追蹤樣本(left join):只保留第一波次有出席的人 A、B、C(A 的第 2 波欄位是空白;D 不在第 1 波,不納入)
全勤樣本(inner join):只保留每個波次都有出席的人 B、C
全樣本(full join):任何一波次有出席就會保留 A、B、C、D(缺席波次的欄位是空白)

流失樣本怎麼判斷?

情況 attrition
前期的 ID 在後期也有 0(留存)
前期的 ID 在後期沒有 1(流失)
前期的 ID 是空白 空白(無法判斷)

結果的列數等於前期樣本列數;後期樣本只用來比對 ID,不會併入其他變項。如果前期檔案已經有 attrition 欄,新的欄位會叫 kit_attrition,不會覆蓋原資料。

常見問題

中文變成亂碼? kitJoin 會自動辨識 UTF-8 與 BIG5 編碼。如果檔案清單出現「中文可能是亂碼」,請用 Excel 開啟原檔,選「另存新檔 → CSV UTF-8(逗號分隔)」後重新上傳。

可以上傳 Excel(.xlsx)嗎? 目前不行。請先在 Excel 另存為「CSV UTF-8」。

出現「ID 型別不一致」? 某一波的 ID 是數字、另一波是文字(例如有前導 0 或字母)。保留「自動轉成文字再比對」的勾選即可;若 ID 有前導 0(例如 007 和 7),請先在原檔統一格式。

結果說「ID 重複」? 某個檔案裡同一個 ID 出現不只一次,結果會變成一人多列。請確認檔案是否重複匯出,或改選能唯一辨識每個人的欄位。

下載的 SAV 欄名被改了? SPSS 的變項名稱有規則(例如不能以數字開頭、不能有空白)。不符合的欄名會自動改名,下載按鈕下方會列出改了哪些。

kits 作答檔說「同一列次同一題有好幾列」? 原檔可能有重複的孩子,或 visit_id 沒有分開不同波次。請確認有對應波次標籤欄(或 wave_m)。

全部題目都是同一個領域怎麼設? 先在「2. 對應欄位」把孩子編號、波次、月齡等欄對應好;不是題目的數值欄(例如體重)在「3. 題目設定」選取後按「排除」。然後按「全選」,在「設領域」選或輸入 lan,按「設領域」。

檔案裡沒有波次欄(一個檔案就是一個波次)怎麼辦? 在 ⑥ 的「2. 對應欄位」把波次標籤和 wave_m 選「自己填」,再到「1.」的表裡替每個檔案填(例如 m018、18)。

kits 作答檔說「沒有 0 分」? kits 的分數要從 0 開始。如果原始計分是 1–5,請在 ⑥ 的「3. 題目設定」選取這些題,平移 −1(全部都從 1 開始時,按建議的按鈕就好)。

可以在「① 上傳檔案」上傳 .csv.gz 嗎? 不行。請先到「⑧ 檔案格式轉換」把它轉成 CSV。

下載沒有反應? 請確認瀏覽器沒有封鎖下載,或改用 Chrome、Edge。

雲端版使用須知

一、資料傳輸與儲存。本雲端版部署於 Posit Connect Cloud,主機位於美國 AWS us-east-2 區域。您上傳的檔案經加密連線傳送至該伺服器,暫存於伺服器的暫存空間以進行處理,本工具不另行保存、備份或分享您的資料;下載檔亦僅於您按下下載時即時產生。各使用者的資料於各自連線中處理,其他使用者無法看到。平台層級的暫存、日誌與備份由 Posit 管理,請參閱其隱私權政策。

二、平台安全性。依 Posit 官方說明:傳輸以 TLS 1.2 以上加密,靜態資料以 AES-256 加密;平台為多租戶架構,以角色權限(RBAC)隔離各客戶資料;已完成 SOC 2 Type I 稽核(Type II 預計 2027 年第一季)。以上為 Posit 之聲明,本網站未另行驗證,亦不構成任何安全保證。

三、KIT 使用者注意事項。若資料含可識別個人之資訊(如姓名、身分證字號、出生日期、地址、聯絡方式),或資料申請時之使用規範、IRB 核准計畫書限制資料存放位置或跨境傳輸,請勿上傳至雲端版。使用前請自行確認符合 KIT 資料使用規範及《個人資料保護法》相關規定。

四、建議使用方式。已去識別化之資料可使用雲端版;含個資或受 IRB 限制之資料請使用本機版(資料不會離開您的電腦)。單檔上傳上限為 500 MB;雲端運算資源有限,大型檔案處理時間較長。

五、免責聲明。本工具以現況提供,僅供資料處理輔助之用。使用者應自行確認輸出結果之正確性,並自行負擔上傳資料之合規責任。對於因使用本工具或第三方平台(Posit Connect Cloud)所生之資料外洩、遺失或其他損害,本工具開發者不負任何責任。

參考連結:Posit 安全說明 · SOC 2 稽核公告 · Posit Trust Center · Posit 隱私權政策

開發者說明