【问题标题】:Append multiple csv from directory to single dataframe and assign unique ID based on individual csv filenames将多个 csv 从目录附加到单个数据帧,并根据单个 csv 文件名分配唯一 ID
【发布时间】:2015-03-10 18:45:36
【问题描述】:

我想定期从一个目录中导入 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)

【问题讨论】:

    标签: r


    【解决方案1】:

    过去我只是将文件名 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 文件,然后一次将它们全部绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 2014-02-26
      • 2021-07-15
      • 2011-07-16
      • 2021-10-24
      • 2018-03-08
      • 2017-08-07
      相关资源
      最近更新 更多