将多个csv从目录附加到单个数据帧,并根据各个csv文件名分配唯一ID

时间:2015-03-10 18:45:37

标签: r

我想定期从目录导入100个csv文件,根据各个文件名为每个文件分配一个唯一ID,然后将文件附加到单个数据框。当新文件上传到目录时,我希望能够将新文件附加到数据帧 我有:

我找到了几个有效附加目录中所有文件的选项,但是我没有找到一种方法来附加与每个文件的文件名对应的唯一ID。

从我使用的目录导入和追加文件:

library(data.table)
setwd("C:/data")
Filelist <- list.files()
appenddata = rbindlist(lapply( filelist, fread,  header=TRUE ))

要创建我使用的唯一ID:

Appenddata$id = substr(filelist, 1, 20)

1 个答案:

答案 0 :(得分:3)

过去我只是将文件名rep()作为一个列并循环遍历csv文件,如下所示:

df <- data.frame()
for(file in files){
  new_df <- read.csv(file)
  new_df$id <- rep(file, nrow(new_df))
  df <- rbind(df, new_df)
}

如果您需要更好的表现。您可能会将数据帧读取到列表中,通过lapply创建您的id文件,然后立即对它们进行rbinding。