如何在R中组合多个.csv文件

时间:2016-03-15 14:52:31

标签: r csv

我是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 "}"

有人能帮忙吗?如果是这样,请你解释一下,如果有新手编程的人能够效仿。

谢谢

2 个答案:

答案 0 :(得分:0)

您好我认为您的代码几乎有效,您忘了将文件名放在矢量中。您可以使用

创建一系列文件名
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的信用。

答案 1 :(得分:0)

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

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)

感谢您的帮助