【问题标题】:Importing multiple .csv files into R and adding a new column with file name将多个 .csv 文件导入 R 并添加带有文件名的新列
【发布时间】:2017-04-21 18:40:31
【问题描述】:

我有 80 个单独的 .csv 文件,它们具有相同的列和标题,我可以使用以下命令将它们作为一个数据帧导入和 rbind:

 file_names <- dir("~/Desktop/data") 
 df <- do.call(rbind,lapply(file_names,read.csv))

但我想添加一个新变量(“名称”),用于标识每个观察来自哪个 .csv 文件。因此,例如,对于“NY.csv”文件中的所有观察结果,此变量“名称”将是“NY”,对于“DC.csv”文件中的所有观察结果,该变量将是“DC”,等等...... 有没有办法做到这一点,而无需在每个 .csv 上手动添加这个新列?谢谢!

【问题讨论】:

    标签: r csv


    【解决方案1】:

    应该这样做:

    file_names <- dir("~/Desktop/data") 
    df <- do.call(rbind, lapply(file_names, function(x) cbind(read.csv(x), name=strsplit(x,'\\.')[[1]][1])))
    

    【讨论】:

    • 嘿@mpjdem 我喜欢你用这个去哪里,但我收到以下错误。知道为什么/如何解决它吗?谢谢! “!header 中的错误:无效的参数类型”
    • 它是否有助于在read.csv() 调用中明确设置header=TRUE? (假设你有一个标题;否则header=FALSE
    • 不,我仍然遇到同样的错误。我有一个标题;想不通。 @mpjdem
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2017-08-03
    • 2021-07-15
    • 2014-07-20
    • 1970-01-01
    相关资源
    最近更新 更多