我有两个大数据帧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)
更有效的解决方案?谢谢
答案 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