R,合并数据帧列表以查找每个数据帧唯一的行

时间:2017-11-24 16:06:36

标签: r join

我有一个不同数据框的列表,只是一个通用示例:

x <- data_frame(i = c("a","b","c"), j = 1:3)
y <- data_frame(i = c("b","c","d"), k = 4:6)
z <- data_frame(i = c("c","d","a"), l = 7:9)
list(x,y,z)

我想找到不同夫妻(xy,yz,xz)和xyz中常见的行,以及x,y,z中唯一的行。

我想找到一些快速编码方法。

我在这里读了其他帖子,我在类似的问题中找到了这个:

list(x,y,z) %>%
    Reduce(function(dtf1,dtf2) left_join(dtf1,dtf2,by="i"), .)

我试过了:

list(x,y,z) %>%
    Reduce(function(x,y) anti_join(x,y, by="i"), .)

它给了我x中但不是y中的行,这意味着我为每对夫妇写了一条相似的行,然后是inner_join结果。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您需要使用:

all<-plyr::join_all(list(x,y,z), "i",type = "full")
相关问题