2017-11-24 12 views
1

私は、異なるデータフレームのリスト、単なる一般的な例があります。R、各データフレームのためのユニークな行を見つけるために、データフレームのリストをマージ

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

all<-plyr::join_all(list(x,y,z), "i",type = "full") 
+0

は、それが完全に働いた、ありがとうございました。 –

+0

@SalvoR ... [Thanks](https://meta.stackexchange.com/a/5235)というStackOverflowの方法を忘れないでください。 – Parfait

関連する問題