2016-03-15 148 views
0

我是R的新手,并且有一个包含〜300个.csv文件的文件夹。我试图将所有的数据合并成一个文件,以便我可以对它进行一些基本的算术运算。我试图寻找但功能我试图再拿我的网站的错误,例如如何合并R中的多个.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 "}"

会任何人都可以提供帮助?如果能的话,请你解释一下,这样编程新手就能跟随。

谢谢

+4

[这](http://stackoverflow.com/questions/30242065/trying-to-merge-multiple-csv-files-in-r),或者可能[this](http://stackoverflow.com/questions/20666073/how-to-combine-multiple-csv-files-in-r) – Sotos

+0

第一个错误意味着你不能使用'“001.csv”“002。 csv“'。也许试试'list(“001.csv”,“002.csv”')。 –

+1

@Sotos如果它是重复的请标记为这样 –

回答

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这是我用来创建pollutantmean功能。

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) 

感谢您的帮助