とある技術者の徒然草

生産技術者の適当な日記(統計言語Rに関するメモがメイン)

【R言語】ファイル名を一括して読みこみ、ファイル名の一部列として残す

ファイル名を一括して読みこみ、ファイル名の一部列として残す



フォルダに保管されている大量のファイルを一括して読みこむときに、
ファイル名の一部(例えば3-4桁の機械番号)を列として残したい時のコードです。

# Tでファイル名にディレクトリ追加
List <- list.files(path = "C:/Users/" , full.names = T)

flist <- list()

#Listのファイル数だけ読み込む
#ファイル名の一部から3-4桁のmachinenumberを抜き取りして列に追加する
for (i in 1:length(List)){
  machinenum <- str_extract(List[i],"machine(\\d{3,4}-\\d)|machine\\d{3,4}")#正規表現でmachinenumを抜き出す
  add <- fread(List[i],na.strings = "") #空白はNAとする
  add$machinenum <- machinenum
  flist <- c(flist,list(add))
}

#全リストを結合、列名を一致させる、一致しないものはNA
data_bind <- rbindlist(flist,use.names = TRUE, fill = TRUE)




読み込んだファイルのNAを0で置換して、
数値を切り上げるときは以下のコードで実行します。

df %>% 
  mutate_all(funs(ifelse(is.na(.),0,.))) %>%  #naを0に置換
  mutate_if(is.numeric, round, digits=0) ->df2 #roundで切り上げ