2016-03-15 144 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) 

感謝您的幫助