2012-10-29 116 views
2

我有不同長度的兩個表,我需要通過兩個共同的列(季節和客戶端)與港定居人士將它們合併,並填寫細胞時,沒有共同的要素。下面我展示了兩個原始表和最後的表,我需要的一小部分。我已經嘗試了許多沒有成功的事情。通過合併共同列不同長度的表[R

season client.ID qtty 
1998 13 30 
1999 13 30 
2000 13 29 
1998 28 18 
1999 28 18 
2000 28 18 
1998 35 21 
1999 35 21 
2000 35 21 

season client.ID vessel.ID overLength 
1998 28 29 17.1 
1998 28 1809 4.26 
1998 28 2215 9.45 
1998 28 4173 5.8 
1998 28 8151 4.5 
1999 28 29 17.1 
1999 28 1809 4.26 
1999 28 2215 9.45 
1999 28 4173 5.8 
1999 28 8151 4.5 
2000 28 29 17.1 
2000 28 1809 4.26 
2000 28 2215 9.45 
2000 28 4173 5.8 
2000 28 8151 4.5 
1998 35 36 9.91 
1999 35 36 9.91 
2000 35 36 9.91 
1998 35 40 9.91 
1999 35 40 9.91 
2000 35 40 9.91 


season client.ID vessel.ID overLength qtty 
1998 13 NA NA 30 
1999 13 NA NA 30 
2000 13 NA NA 29 
1998 28 29 17.1 18 
1998 28 1809 4.26 18 
1998 28 2215 9.45 18 
1998 28 4173 5.8 18 
1998 28 8151 4.5 18 
1999 28 29 17.1 18 
1999 28 1809 4.26 18 
1999 28 2215 9.45 18 
1999 28 4173 5.8 18 
1999 28 8151 4.5 18 
2000 28 29 17.1 18 
2000 28 1809 4.26 18 
2000 28 2215 9.45 18 
2000 28 4173 5.8 18 
2000 28 8151 4.5 18 
1998 35 36 9.91 21 
1999 35 36 9.91 21 
2000 35 36 9.91 21 
1998 35 40 9.91 21 
1999 35 40 9.91 21 
2000 35 40 9.91 21 

回答

4

這是一個簡單的案例mergeall = TRUE

假設你的數據在data1data2

然後

merge(data1, data2, all = TRUE) 

應該工作。

如果要指定哪些正在被合併(如果有,你不希望使用公共列)

merge(data1, data2, all = TRUE, by = c('season', 'client.ID')) 
+0

我得到這個錯誤:「無法分配尺寸128.0 MB的矢量」我想這是因爲mu筆記本電腦無法完成任務。無論如何,謝謝你。 Cheers,Rafael P.S.我會嘗試在其他電腦上。 – Rafael

+0

閱讀本http://stackoverflow.com/questions/1358003/tricks-to-manage-the-available-memory-in-an-r-session,該'data.table'避免了大量的內部複製。有偉大的護身符,和上面的代碼將工作,如果'data1'和'data2'是'data.tables'。 – mnel

+0

它的工作。謝謝,R – Rafael