2假设我有两个数据帧:
A <- data.frame(X1=c(1,2,3,4,5), X2=c(3,3,4,4,6), X3=c(3,2,14,5,4))
B <- data.frame(X1=c(1,3,5), X2=c(3,4,6))
我想将两者合并,以便当A中的X1和X2在B中的一行中时,然后从A返回全部行(包括所有列)。我尝试了anti_join并合并,但是结果是无法按计划工作,并且合并无法处理较大的数据框。我也尝试过使用数据表程序包。 我希望将以下数据框返回或保存到新对象。
C <- data.frame(X1=c(2,4), X2=c(3,4), X3=c(2,5))
答案 0 :(得分:1)
您不只是做A%>%anti_join(B, by = c("X1", "X2"))
吗?这样,您将by
设置为X1和X2,并且得到了所有异常值。
> A <- data.frame(X1=c(1,2,3,4,5), X2=c(3,3,4,4,6), X3=c(3,2,14,5,4))
> B <- data.frame(X1=c(1,3,5), X2=c(3,4,6))
> A%>%inner_join(B, by = c("X1", "X2"))
X1 X2 X3
1 1 3 3
2 3 4 14
3 5 6 4
> A%>%anti_join(B, by = c("X1", "X2"))
X1 X2 X3
1 2 3 2
2 4 4 5