【问题标题】:How do I combine multiple .csv files in R [duplicate]如何在 R [重复] 中合并多个 .csv 文件
【发布时间】:2016-03-15 14:52:31
【问题描述】:

我是 R 新手,我有一个包含约 300 个 .csv 文件的文件夹。我正在尝试将所有数据合并到一个文件中,以便可以对其进行一些基本的算术运算。我尝试过在网上搜索,但是我尝试过的功能不断给我带来错误,例如

 master <- list.files(path = "~/")
master <- do.call("rbind", lapply("001.csv" "002.csv", read.csv, header = TRUE))

回馈Error: unexpected string constant in ""329.csv" "330.csv"" 等等

还有以下

master <- do.call( rbind, lapply(`001.csv`,`002.csv` function(nam){ 
  cbind(name=nam, read.file(paste0(nam,".csv"), header=TRUE) )
}))

Error: unexpected '}' in "}"

有人可以帮忙吗?如果是这样,您能否解释一下,以便编程新手能够跟进。

谢谢

【问题讨论】:

  • This,或者this
  • 第一个错误表示你不能使用"001.csv" "002.csv"。不妨试试list("001.csv", "002.csv")。
  • @Sotos 如果它是重复的,请标记为这样

标签: r csv


【解决方案1】:

您好,我认为您的代码几乎可以工作,您忘记将文件名放在向量中。您可以使用

制作文件名序列
do.call("rbind",lapply(c("001.csv", "001.csv"), read.csv, header = T))

如果文件全部采用“001.csv”形式,您可以使用以下函数自动命名 csv 文件的名称,例如,如果我们有 001.csv 直到 10.csv,您可以使用:

pollutantmean <- function(idrange) {
  output <- c()
  for(id in idrange){
    if((id>=1) && (id<10)) {
      output <- c(output, paste("00",id,sep=""))
    } else if((id>=10) && (id<=99)) {
      output <- c(output, paste("0",id,sep=""))
    } else {
      output <- c(output,id)
    }}
  output
}


do.call("rbind",lapply(paste0(pollutantmean(1:10),".csv"), read.csv, header = T))

归功于Using colon to specify a sequence in function,我用它来创建污染平均函数。

【讨论】:

    【解决方案2】:

    最后我用了这个,它似乎工作了。

    files_full <- list.files("specdata", full.names=TRUE)
    
    dat <- data.frame()
        for (i in 1:332) {
          dat <- rbind(dat, read.csv(files_full[i]))
        }
        str(dat)
    

    感谢大家的帮助

    【讨论】:

      猜你喜欢
      • 2020-09-23
      • 2014-01-07
      • 2012-06-13
      • 2012-04-29
      • 2019-07-02
      • 1970-01-01
      • 2017-10-07
      • 2015-07-26
      • 2012-01-14
      相关资源
      最近更新 更多