我想加入类似的数据框:
input:
x <- data_frame(a=c(1,2,3,4),b=c(4,5,6,7),c=c(1,NA,NA,NA))
y <- data_frame(a=c(2,3),b=c(5,6),c=c(1,2))
desired output:
z <- data_frame(a=c(1,2,3,4),b=c(4,5,6,7),c=c(1,1,2,NA))
我试过
x <- data_frame(a=c(1,2,3,4),b=c(4,5,6,7),c=c(1,NA,NA,NA))
y <- data_frame(a=c(2,3),b=c(5,6),c=c(1,2))
z <- merge(x,y, all=TRUE)
但它有一个不便之处:
a b c
1 1 4 1
2 2 5 1
3 2 5 NA
4 3 6 2
5 3 6 NA
6 4 7 NA
它将有相似之处的行加倍。有没有办法在不删除不需要的行的情况下获得所需的输出?
修改
我无法删除NA
的行,x
数据框由NA不包含在y数据帧中的行组成。如果我这样做,我会从x
数据框(4 7 NA)
感谢您的帮助
答案 0 :(得分:0)
您可以使用data.table
包的更新联接:
# load the packge and convert the dataframes to data.table's
library(data.table)
setDT(x)
setDT(y)
# update join
x[y, on = .(a, b), c := i.c][]
给出:
a b c 1: 1 4 1 2: 2 5 1 3: 3 6 2 4: 4 7 NA