【问题标题】:Rbind the files with filenames/patterns included in a column of a source file using R使用 R 绑定包含在源文件列中的文件名/模式的文件
【发布时间】:2020-07-11 17:59:14
【问题描述】:

我正在尝试 rbind 在源文件的列中找到的数千个文件。我需要 rbind 的文件的文件名如下:
_1.csv、__1.csv、___1.csv、_2.csv.、3.csv、_3.csv等

源文件是这样的:

由于文件名包含“1”,因此这些csv文件所属的城市在A市。

因此,我想要的输出是创建一个名为 A.csv 的新文件 rbind 内容为 _1.csv、__1.csv、___1.csv 和 _2.csv。另一种方法是制作一个新的 B.csv 文件,其中包含所有带有“3”的文件名的 rbind 内容(3.csv 和 _3.csv)。

我正在处理一个大数据,因此有数千个文件。

【问题讨论】:

    标签: r loops csv rbind


    【解决方案1】:

    这没有经过测试,但可能会有所帮助

    files <- list.files(pattern = "_.*csv")
    
    write_to_csv <- function(x, y){
      if(file.exists(y)){
        write.csv(x, file=y, append = T, col.names = F, row.names = F)
      } else
        write.csv(x, file=y, row.names = F)
    }
    
    
    for(f in files){
      x <- read.csv(f)
    
      if(grepl("1|2", f)){
        write_to_csv(x, "A.csv")
    
      } else if(grepl("3", f)){
        write_to_csv(x, "B.csv")
      }
    }
    

    【讨论】:

    • 嗨,先生,我实际上正在处理数千个文件,所以我避免使用您在上面发布的方法-.-您是否碰巧知道 rstudio 中可以帮助我避免使用您发布的代码的其他功能上面?
    • 您为什么要避免使用上述方法?是不是崩溃了?
    • @karate 如果您在 linux/mac 操作系统中工作,我建议在终端中使用cat 命令,例如:cat *1.csv &gt; A.csv
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 2015-09-14
    • 1970-01-01
    • 2016-07-31
    • 2010-12-07
    相关资源
    最近更新 更多