最近は,生体時系列の解析ニーズが高まっていると感じます.Fitbitで計測されたデータの分析を頼まれることも多いです.
今回は,個人ごとにフォルダが分けられているような場合に,分析したい目的のファイルへのパスを抽出する方法を紹介します. 分析に使うのは,Rです.
目的のファイル名が固定のとき
以下のフォルダ構造のように,ID_01,ID_02などのフォルダがあり,各フォルダの中に,heart_rate.csvが存在する場合を考えます.
DIR
├── ID_01
│ ├── hoge1
│ ├── hoge2
│ └── DATA
│ └── heart_rate.csv
├── ID_02
│ ├── hoge1
│ ├── hoge2
│ └── DATA
│ └── heart_rate.csv
├── ID_03
│ ├── hoge1
│ ├── hoge2
│ └── DATA
│ └── heart_rate.csv
├── ID_04
│ ├── hoge1
│ ├── hoge2
│ └── DATA
│ └── heart_rate.csv
└── ID_05
├── hoge1
├── hoge2
└── DATA
└── heart_rate.csv
このとき,heart_rate.csvへのパスを取得したければ,
DIR <- "上の図のDIRへパスを指定してください" PATH2csv <- list.files(DIR,pattern="^heart_rate.csv$",include.dirs=TRUE,full.names=TRUE,recursive=TRUE)
のようにしてください.そうすれば,PATH2csvに,フルパスがすべて入ります.
ファイルを一つ読み込んで処理するときは,i に番号を指定して
i <- 1 DAT <- read.csv(PATH2csv[i], header=TRUE)
などとしてください.
目的のファイル名の一部が共通のとき
以下のフォルダ構造のように,ID_01,ID_02などのフォルダがあり,各フォルダの中に,?????_heart_rate.csvが存在する場合を考えます.?????のところに,何か文字が書かれているとします.
DIR
├── ID_01
│ ├── hoge1
│ ├── hoge2
│ └── DATA
│ └── 29809_heart_rate.csv
├── ID_02
│ ├── hoge1
│ ├── hoge2
│ └── DATA
│ └── 97232_heart_rate.csv
├── ID_03
│ ├── hoge1
│ ├── hoge2
│ └── DATA
│ └── 836887_heart_rate.csv
├── ID_04
│ ├── hoge1
│ ├── hoge2
│ └── DATA
│ └── 09673_heart_rate.csv
└── ID_05
├── hoge1
├── hoge2
└── DATA
└── 24362_heart_rate.csv
このとき,******_heart_rate.csvへのパスを取得したければ,
DIR <- "上の図のDIRへパスを指定してください" PATH2csv <- list.files(DIR,pattern="*.heart_rate.csv$",include.dirs=TRUE,full.names=TRUE,recursive=TRUE)
のようにしてください.そうすれば,PATH2csvに,フルパスがすべて入ります.ポイントは,共通部分heart_rate.csv$の前に,*.を書くことです.正規表現を使いこなせば,探すファイル名の詳細をしていできます.
パスの部分とファイル名を分離する
上の例では,フルパスを取得しました.場合によっては,パスの部分とファイル名を分けたいときがあると思います. パスのみを切り出したいときは,
i <- 1 dirname(PATH2csv[i])
ファイル名のみを切り出したいときは
i <- 1 basename(PATH2csv[i])
としてください.