2016-07-28 3 views
0

私は2つのdata.frameオブジェクトを持っています。相対的な補集合を取得する必要があります。私はこのサイトから同様の投稿を確認しましたが、確かに誰かがすでに尋ねましたが、それはベクタに関するもので、大丈夫です。しかし、私はこのサイトの既存のポストからの解決策を試しましたが、私は期待した結果を得られませんでした。私はsetdiffのようないくつかのアプローチを試みましたが、pmatchはその逆でした。誰もこの仕事を効率的に達成する方法を提案できますか?1つのdata.frameの相対的補数を別の補間で得る方法は?

foo <- data.frame(start=seq(1, by=4, len=6), stop=seq(3, by=4, len=6)) 
bleh <- data.frame(start=seq(1, by=5, len=5), stop=seq(3, by=5, len=5)) 

所望の出力:

ウィキに設定された理論を補完するためによると、私の予想される出力は次のように:

start stop 
1  5 7 
2  9 11 
3 13 15 
4 17 19 

がどのように私は1つのデータの関連補数セットを取得することができますフレームを別のフレームにする?この仕事を達成するための正しい方法は何ですか?おかげ

答えて

2

dplyrパッケージ(補正用@Frankのおかげで)

setdiff(foo,bleh) 
# start stop 
#1  5 7 
#2  9 11 
#3 13 15 
#4 17 19 
+0

からsetdiffを使用して、この

library(dplyr) output <- anti_join(foo,bleh) output[order(output$start),] 

別のオプションを試してみてください可能なビット以上を改善するために、ということでしょうか?私はそれらを(行とそのインデックスに応じて)順調に並べることを意味します。 Thx – datageek

+0

私はまたこのようにしました:base :: setdiff(foo、bleh)、それは私の予想される出力と一致しませんでした。 setdiffを使用した場合、私の出力を得ましたか?奇妙なのはなぜ、私は別の出力を得るのですか? – datageek

+1

いいえ、setdiff関数もdplyrから来ています。それは、各テーブルをセットとして扱うので、anti_joinよりも良い方法です。 – Frank

関連する問題