2014-03-31 90 views
0

我有兩個大的數據幀A(N1乘以6),B(N2乘以2)。 A的前兩列是匹配B的鍵,A中的所有鍵都是B的一個子集。在R中的兩個數據幀之間填充缺失的行

我想要做的是:使用B中但不是A中的那些鍵填充A,然後填充其他4個「NA」列,稍後爲缺失值插補保留。

A 
1 2 3 4 5 6  
1 3 4 5 6 7 

B 
1 2 
1 3 
1 4 

My new A 
1 2 3 4 5 6  
1 3 4 5 6 7 
1 4 NA NA NA NA 

我想出這樣的事情

rowDiff <- setdiff(A[,1:2],B) 
pad <- cbind(rowDiff, matrix(rep("NA",4*nrow(rowDiff)),ncol=4)) 
A <- rowbind(A,pad) 

任何更有效的解決方案?謝謝

回答

2

這項工作?

merge(B, A, all.x=TRUE) 

它測試確定:

> A <- read.table(text="1 2 3 4 5 6  
+ 1 3 4 5 6 7") 
> 
> B <- read.table(text="1 2 
+ 1 3 
+ 1 4") 
> merge(B, A, all.x=TRUE) 
    V1 V2 V3 V4 V5 V6 
1 1 2 3 4 5 6 
2 1 3 4 5 6 7 
3 1 4 NA NA NA NA 
+0

感謝您的解決方案。 Rstudio爲我的原始大型數據集拋出了內存不足的消息。任何選擇? – Jin

+0

使用'library(dplyr); left_join(B,A)' – Hugh