2013-10-03 140 views
0

我有一個文件夾,其中包含數百個.csv文件,我希望將它們合併到一個數據框中。在R中合併具有不匹配標題的CSV文件

我一直在使用這個代碼工作得比較好,但只適用於匹配頭文件。

df <- do.call(rbind, lapply(filenames , read.csv)) 

兩部分問題。

1)我想追加此do.call代碼以包括一個附加列,其包括.csv文件名數據中的每一行

2.)我也想能夠合併.csv文件與不匹配的標題。每個文件都有四列(名稱不同),但數據類型匹配。所以我想強制文件綁定在一起,無論列標題。

這篇文章是有幫助的,但不是合併與非mathcing頭的文件

Merge multiple CSV files and remove duplicates in R

我也用這個代碼;再次只爲匹配頭的文件

for (file in filenames){ 
    # if the merged dataset doesn't exist, create it 
    if (!exists("dataset")){ 
    dataset <- read.csv(file, header=TRUE, sep="\t") 
    } 
    # if the merged dataset does exist, append to it 
    if (exists("dataset")){ 
    temp_dataset <-read.csv(file, header=TRUE, sep="\t") 
    dataset<-rbind(dataset, temp_dataset) 
    rm(temp_dataset) 
    } 
    } 
+0

什麼是很清楚這裏是你想不匹配,將列會怎麼樣呢?你刪除它們嗎,你把它們都保存了嗎?如果是後者,沒有新列的文件會發生什麼 –

+0

@RicardoSaporta - 我稍微編輯了這個問題 - 每個文件有四列(名稱不同),但數據類型匹配。所以我想強制文件綁定在一起,無論列標題。 – Flammulation

+0

是從一個文件到下一個文件總是處於同一順序的列?如果是這樣,只需使用'header = FALSE'來讀取它們,然後將它們綁定到 –

回答

0

什麼:

df <- do.call(rbind, lapply(filenames , 
         function(x) data.frame(filname = x, read.csv(x))) 
+0

這適用於添加包含文件名的列。任何關於合併文件與不匹配列名的能力的想法? – Flammulation

+1

您需要覆蓋現有名稱或提供匹配名稱和刪除不匹配的規則。這個問題目前太模糊了。通過編輯您的問題來提供測試用例。 –

+1

我加入了從@DWin添加文件名的代碼,其中從'RicardoSaporta'添加了'header = FALSE',並以此代碼結束:'dataset < - ldply(filenames,function(x)data.frame(filname = x ,read.csv(x,header = FALSE)))' – Flammulation

相關問題