lab.jsで作成した調査・実験で出力されるデータの読み込みについて紹介します。基本的には,出力されたままのデータ(ローデータ)を余計な処理をせずに扱いやすいcsvに変換する方法を紹介します。詳しくは紹介しませんが,SQLite形式とJSON形式については,ここで紹介する方法を応用することで(csvに変換することなく)Rでそのまま分析することもできるでしょう。前処理については別途,作成しています(前処理(Excel & R) )。
lab.jsでの調査・実験の結果は,実施する方法によって出力されるファイル形式が異なります。
データはLong型でのデータ構造です。Wide型を先に説明した方がわりやすいので,Wide型を説明します。Wide型というのはExcelやGoogleスプレッドシートでよく見られる横に広がったデータ構造を指します。Long型というのは,変数を列とし,データを行ごとに入っている構造です。lab.jsではLong型のデータ構造で出力されます。参加者ごとに縦に長いデータとなるので,参加者全員分が1つのファイルに出力された場合,行数は数千〜万になることもあります。Long型での分析方法については別途,説明しますが,縦に長いデータだということを覚えておいてください。詳しくは前処理(Excel & R) をご覧ください。
オフライン(Offline data collectionでエクスポートした場合)とオンライン(Open labを利用した場合)ではcsv形式でデータが出力されます。ただし,オフラインでは各参加者ごとのcsvファイルが出力され,オンラインでは全員分が結合した1つのcsvファイルが出力されます。同じcsvファイルでも構造が異なるので注意してください。
<aside> 💡 Excelでの読み込み(出力されたcsvをそのままExcelで読み込む場合) csv形式はRやExcelなど,様々なソフトで読み込むことができますが,Excelで読み込む場合は注意が必要です。lab.jsで出力されるcsvにはBOMという情報が書き込まれていないため,Excelで開く or インポートするとデータに含まれる日本語が文字化けしてしまいます。これはエンコード形式を指定しても直りません。そのため,Excelで読み込む場合には以下の手続きを取ってください。
インポートする際には「区切り記号付き」で,「元のファイル」には「Unicode(UTF-8)」を選び,区切り文字には「カンマ」を選びましょう。
</aside>
オフラインでは参加者ごとにcsvファイルが出力されますが,分析する場合には1つのcsvファイル(もしくは1つのシート)にまとめる方がよいでしょう。そこで,1つのフォルダに参加者全員分のcsvファイルを入れてると,1つのファイルに結合するというRスクリプトを用意しました。左クリックで開いた後,右クリックで「別名で保存」して利用してください。コードの中身も書いておきます。なお,tidyverseパッケージをインストールしていない場合は以下のコードを実行してから,mergeCSV.rを実行してください。
install.packages("tidyverse")
#mergeCSV.r
#パッケージ読み込み
require(tidyverse)
#dataフォルダ内のcsvファイル一覧
fileList <- list.files(path = './data', pattern = '*.csv', full.names = TRUE)
#1つに結合し,ファイル名を識別用に追加
tbl <- map_dfr(fileList, function(x){read_csv(x) %>% mutate(fileName = x)})
#ファイル名をidに変換し,削除
tbl <- tbl %>%
mutate(., id = group_indices(., fileName)) %>%
select(id, everything()) %>%
select(-fileName)
#csvにエクスポート
#na = '欠損値'で欠損値の変換先を指定
#HADで分析する場合は,na = "."を推奨
write_excel_csv(tbl, "data.csv", na = "")
使い方ですが,Rをインストールした上で,以下のようなに,1つのフォルダにこのスクリプトを入れた後,dataというフォルダを作成します。そして,dataフォルダの中に各参加者のcsvファイルを入れてください(csvファイルの名前はそのままでOK)。その後,mergeCSV.rを実行してください。そうすると,data.csvという1つの結合したcsvファイルが出力されます。このcsvファイルにはBOMを付与しているので,そのままExcelで扱うことができます。欠損値をどのように変換するかも選択できるので,HADなどで分析を行う場合には,欠損値を指定しておいた方がよいでしょう。