填充R中两个数据帧之间缺少的行

时间:2014-03-31 01:50:05

标签: r matrix

我有两个大数据帧A(N1乘6),B(N2乘2)。 A的前两列是匹配B的键,A中的所有键都是B的子集。

我想要做的是:使用B中但不在A中的那些键填充A,并使用" NA"填充其他4列,稍后保留缺失值插补。

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)

更有效的解决方案?谢谢

1 个答案:

答案 0 :(得分:2)

这会有用吗?

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

测试OK:

> 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