データ読み込み~データセットを整える(運転操作課題_単純反応曲線路視野)

ここでは、SナビのデータをRで一気に読み込みたい場合のコードについて紹介する.例として、Sナビの運転操作課題_視野3のデータを各対象者ごとに縦にbindして列名を付けるところまでを下記に示す.解析については、データを確認したりするためにRstudioでの操作を推奨します.本コードの使用は一定程度のコードを書くなどR studio使用経験がある方を対象にしております.基本的なコードに関するお問い合わせ、設定に関するお問い合わせには回答いたしかねます.なお、本コードの使用については、使用者の自己責任であり、関連して発生した不具合に関して著者は責任を負いません.

まず、Rstudioを開いている状態で、左上のFile⇒New File⇒R Scriptの順番でマウスオーバーし、R Scriptをクリックします(人によってはR Markdownの方が使いやすいという方もいるかもしれません).

Untitled

Untitled

R Scriptをクリックすると、上記のように、左上のビューアに何も書かれていないUntitled1というものが出てきます.ここに下記のコードをコピペし、左側にあるSourceボタンをクリックするだけです.

#使用するパッケージは、パッケージのインストールを簡素化するためのpacman、下処理関連のtidyverse、使っているPCのファイル参照関係の問題を解決するためのhereの3つのパッケージである.
if (!require("pacman")) install.packages("pacman")
library(pacman)
pacman::p_load(tidyverse,here)
#繰り返し処理するためのmap_dfr()関数を使用する
dat<-map_dfr(
  list.files(
#hereでzipファイルが格納されているフォルダを指定
    here("INSPECTIONDATA","運転操作課題"), 
#pattern=は抽出したいzipファイルの名前を指定
    pattern = "\\\\視野_3.zip$", 
#full.names=はTRUEに設定することで相対ファイルパスになる、FALSEにするとファイル名だけになるので失敗する
    full.names = TRUE), 
#csvを読み込むための関数
  ~read_csv( 
#unz():zipファイルを解凍し、格納されているcsvを指定するための関数、
    unz(.x, "LOGGING/TaskScenarioResult.csv"), 
#先頭行に項目名が含まれていないので、col_names=FALSEとする
            col_names = FALSE, 
#文字化け対策として設定
						col_types = cols("X1" = col_character(),
                             "X2" = col_character()),
            locale = locale(encoding = "shift-jis"))
)

#列名の設定(運転操作課題視野3の場合)
colnames(dat) <- c("測定年月日", "ID", "氏名", "年齢", "性別", "コース番号", "左誤差率", "左誤差率SD", "左誤差率変動係数", "右誤差率", "右誤差率SD", "右誤差率変動係数", "左右誤差率平均比", "左右誤差率SD比", "全体無反応数", "全体反応数", "全体反応時間", "全体反応時間SD", "全体反応時間変動係数", "左無反応数", "左反応数", "左平均反応時間", "左反応時間SD", "左反応時間変動係数","右無反応数", "右反応数", "右平均反応時間", "右反応時間SD", "右反応時間変動係数", "左右反応時間比", "左右標準偏差比","セル数縦", "セル数横", "A1成功率", "A1誤反応回数", "A1反応平均", "A2成功率", "A2誤反応回数", "A2反応平均", "A3成功率", "A3誤反応回数", "A3反応平均","A4成功率", "A4誤反応回数", "A4反応平均","A5成功率", "A5誤反応回数", "A5反応平均","A6成功率", "A6誤反応回数", "A6反応平均", "A7成功率", "A7誤反応回数", "A7反応平均", "A8成功率", "A8誤反応回数", "A8反応平均", "A9成功率", "A9誤反応回数", "A9反応平均", "B1成功率", "B1誤反応回数", "B1反応平均", "B2成功率", "B2誤反応回数", "B2反応平均", "B3成功率", "B3誤反応回数", "B3反応平均", "B4成功率", "B4誤反応回数", "B4反応平均","B5成功率", "B5誤反応回数", "B5反応平均", "B6成功率", "B6誤反応回数", "B6反応平均", "B7成功率", "B7誤反応回数", "B7反応平均", "B8成功率", "B8誤反応回数", "B8反応平均", "B9成功率", "B9誤反応回数", "B9反応平均", "C1成功率", "C1誤反応回数", "C1反応平均", "C2成功率", "C2誤反応回数", "C2反応平均", "C3成功率", "C3誤反応回数", "C3反応平均","C4成功率", "C4誤反応回数", "C4反応平均","C5成功率", "C5誤反応回数", "C5反応平均","C6成功率", "C6誤反応回数", "C6反応平均", "C7成功率", "C7誤反応回数", "C7反応平均", "C8成功率", "C8誤反応回数", "C8反応平均", "C9成功率", "C9誤反応回数", "C9反応平均", "誤反応左右", "誤反応左", "誤反応右", "平均反応時間左右", "平均反応時間左", "平均反応時間右",  "標準偏差左右", "標準偏差左", "標準偏差右", "変動係数左右", "変動係数左", "変動係数右", "左右反応時間比", "左右標準偏差比", "誤差平均値左", "誤差平均値右", "車線標準偏差左", "車線標準偏差右", "車線変動係数左", "車線変動係数右", "左右誤差率平均比", "車線標準偏差比")

# datを確認すると、デフォルトのままでは反応時間NAのはずが、0.000000になっているので置換する
dat<-dat %>%  mutate_at(vars(ends_with("反応平均")),na_if,0.000000)

# 性別データが0,1になっているので、男性=>0、女性=>1となるように変換する
dat<-mutate(dat,性別=str_replace_all(性別,pattern=c("1"="女性","0"="男性"))) %>%
  mutate_at(vars(ends_with("反応平均")),na_if,0.00000)

# A4~A6,B5,C4~C6のデータは計測していないのでNAに置換
dat<-dat %>% 
  mutate_at(vars(matches(c("A4","A5","A6","B5","C4","C5","C6"))),na_if,0) %>% 
  mutate_at(vars(matches(c("A4","A5","A6","B5","C4","C5","C6"))),na_if,-1)

dat

ここまででdat内に運転操作課題_視野3(曲線路単純)のデータが格納される.人によっては大量のデータがある方もいるかもしれませんが、当方の知り合いでモニターしていただいた方は170名くらいのデータをものの3分かからず抽出することが出来ました.

次の段階として、病院で取得している神経心理検査のデータベースとマッチングしてデータをジョイントする方法について紹介する。