如何合併1個數據集中的100個csv文件?行和列號是不同的。如何在R中的1個數據集中合併100個csv文件?行和列號不同
我有很多csv文件。每個文件都有不同的列和行。 我嘗試了很多方法來合併,但我失敗了,如下所示。 你能給我一些建議嗎?
第一次嘗試。
files=list.files(pattern=".csv$")
files
mydata1=lapply(files, function(x) read.csv(x, stringsAsFactors = FALSE))
mydata2 <- function(x) {
x.diff <- setdiff(colnames(x), colnames(y))
y.diff <- setdiff(colnames(y), colnames(x))
x[, c(as.character(y.diff))] <- NA
y[, c(as.character(x.diff))] <- NA
return(mydata2)
}
merdata= merge(lapply(files, function(x) read.csv(x, stringsAsFactors = FALSE)), files, by=c("location","yearmon", "MME"), all=T)
##錯誤data.frame(列表(yearmon = C( 「1983至1901年」, 「1983年至1902年」, 「1983年至1903年」,: 參數意味着不同的行數:278 ,398
我有1253個CSV文件。我想使這些文件到一個數據集。 同一列的每個文件的名稱應該是相同的名稱,而不是「x.column」這樣的我附上樣本結果文件,你可以很容易地理解我想要做什麼,我向你展示2個示例文件如下所示。 「dput(mydata1 [1:2])」編碼數據如下。最終目標是將1253個文件合併到一個數據集中。 非常感謝您的幫助。
.Names = C( 「yearmon」, 「E01」, 「E02」, 「E03」, 「E04」, 「E05」, 「E06」, 「E07」, 「E08」,「 E09,E10,E11,E12,E13,E14, ,E15,E16,E17,E18,E19,E20,MME 」, 「位置」),類= 「data.frame」,row.names = C(NA, -398L)),
.Names = C( 「yearmon」, 「E01」, 「E02」 ,「E03」,「E04」,「E05」,「E06」,「E07」,「E08」,「E09」,「E10」, 「MME」,「location」),class =「data.frame」 ,row.names = c(NA,-278L )))
#Sample Result iefile_1 [iefile_2]
保留所有CSV文件作爲列表 - 你的代碼lapply部分的輸出,然後使用一個循環合併。 – zx8754
也許合併不是你真正需要的。如果成功結束,它將產生帶有數千列的結果'data.frame',這對工作根本不方便。此外,我懷疑它會在這裏工作 - 你的data.frame具有包含不同數字(不共同)和merge的共同列(例如'E01'和'E02'),其實際上是'INNER JOIN '會產生空的結果表。我建議你先將'mydata1'中的表格重新整理成5列視圖(從'tidyr'包中查看函數'gather'),然後用'dplyr'中的'bind_rows'將它們綁定在一起。 – inscaven
感謝您的回覆。其實,我剛開始在這一天學習R,我可能需要學習很多東西。在這個時候,由於我的理解不夠,我無法聽從你的建議。對於那個很抱歉。如果你不介意,你可以試試怎麼做?讓我給你數據文件。謝謝。 –