2016-08-12 49 views
0

假設您有4個或更多csv文件,我只想合併它們並打印輸出!在R中合併不同大小的數據幀。

我打開的文件,像這樣:

df1 <- read.csv("file1", sep ='\t') 
df2 <- read.csv("file2", sep ='\t') 
df3 <- read.csv("file3", sep ='\t') 
df4 <- read.csv("file4", sep ='\t') 

美中不足的是,所有的文件都行和列,沒有,相同的列名不同的號碼。我的教授說,只是將它們合併,所以我期待的輸出是這樣的

file1.column11 ... file1.column1N file2.column21 ... file2.column2N ... 
value11 ... value1N NA ... NA 
. 
. 
. 
NA ... NA value21 ... value2N 

可以這樣做不知何故?我一直在使用合併(),join_all()和其他的東西,我不能得到這條底線......

我也很新的R.

+0

看這前一個線程可能有用:http://stackoverflow.com/questions/6988184/combining-two-data-frames-of-different-lengths – jtclaypool

回答

0

一般情況下,有沒有具體的方式來將數據框與不同的內容合併。

您需要弄清楚如何合併數據集。有些事情需要考慮:

  • 是否有任何數據集在任何列中都具有相同類型的東西(即使列名不同)?
  • 你想保留/丟棄哪些數據位?
  • 哪些數據位是所有數據集共有的?
  • 其他專欄有什麼關係?任何列之間是否存在一對一或一對多的關係?
1

我是否正確:您沒有相同的列名?如果是的話,那麼只有當他們有一個單列時,他們纔可以並列合併,例如,他們將被合併的值,例如,您可以有年份列或年份主題ID等。 然後你寫: file.overall < - 合併(file1,file2,by =「common_column_name」) 接下來,你連接下一個文件: file.overall2 < - merge(file.overall,file2,by =「common_column_name」) 順序地,您添加所有文件。

如果你想要的列有不同的名稱,只需重命名事先列: 名稱(文件1)< - C(「file1.coulmn1_name」,...)

在另一方面,如果你想要將文件合併到另一個文件中,而不是所有的列都必須具有相同的名稱,並且可以使用rbind操作數,如上一條消息中所述。

希望這會有所幫助, 快樂編碼!

0

如果所有的數據幀具有不同的行名,您可以通過以下方式將它們合併:

merge(df1, df2, by="row.names", all.x=T, all.y=T) 

否則,如果您已經安裝了plyr,你可以做以下(這將填補所有空爲NAS電池):

library(plyr) 
rbind.fill(df1, df2)