危険予測体験のデータセット作成は他のデータセットとは異なり、非常にややこしい手順を踏むので注意が必要である.

手順としては、これまでの手順のようにRからZipファイルに格納されているデータセットを一気に読み込むわけではなく、一度PCでZipファイルを全て解凍する必要がある.

具体的な手順は下記の通りである.

  1. 解凍・展開したZipファイルの中身を格納するためのフォルダ(展開フォルダ)を作成

  2. 上記展開フォルダ内に下記a, bを参考に作成したバッチ(bat)ファイルを作成

    @echo off
    :loop
    if "%~1" == "" goto end
    if "%~x1" == ".zip" (powershell expand-archive %1 %~p1%~n1 -Force)
    shift
    goto loop
    :end
    
  3. 展開フォルダ内に全Zipファイルをコピー&ペーストする.

  4. 全zipファイルコピーをバッチ(bat)ファイルにドラッグ&ドロップする

  5. ドロップ後は自動的に解凍・展開されたフォルダが展開フォルダ内に出力される

  6. 全て解凍・展開されたら展開フォルダ内のZipファイルコピーは削除する(消し忘れるとRでエラーになるため)

参考HP:https://www.himadara.info/entry/expand_all

複数のzipファイルをまとめて解凍(すべて展開)する方法【ダウンロード・インストール不要】 - 貧乏暇だらけ

すべて展開されればRの出番

dat2<-map_dfr(
  list.files(
    here("INSPECTIONDATA","危険予測体験/展開"), 
#INSPECTIONDATAフォルダ内のbatiで展開したフォルダが格納されているフォルダを指定
    pattern = "危険予測体験\\\\(上級\\\\)_01", 
#pattern=は抽出したいファイルの名前のキーワードを指定「***********_ID_上級_1」などで格納されている.初・中・上級とコース番号を指定
#「(」と「)」の前には「\\\\」を入れておくこと
    full.names = TRUE,
    recursive = TRUE),
#下位フォルダも含めて検索
  ~read_csv(.x, #読み込むための関数
            col_names = TRUE, #先頭行に項目名が含まれているので、col_names=TRUEとする
            locale = locale(encoding = "shift-jis"))#文字化け対策として設定
)

lf <- list.files( #ここはID番号を作るためのコード
   here("INSPECTIONDATA","危険予測体験/展開"), #INSPECTIONDATAフォルダとbatiで展開したフォルダが格納されているフォルダを指定
    pattern = "危険予測体験\\\\(上級\\\\)_01", #pattern=は抽出したいフォルダの名前を指定
    full.names = TRUE,
    recursive = TRUE) %>% 
  as.data.frame()
a<-str_split(lf$.,"_") %>% 
  as.data.frame() %>% 
  t() %>% 
  as.data.frame()

dat3<-bind_cols(a$V2,dat2)
dat3<-rename(dat3,ID=...1)