2

SOの以前の質問に似ていますが、完全ではありません。

2 つのデータフレームがあるとします。keep同じid変数が他のデータフレーム ( ) に表示される場合、 1 つのデータフレーム ( ) の観測を削除したいdelete

たとえば、次のkeepようになります。

id   var
1    dog
2    dog
3    cat
4    dog
5    dog
6    cat

そして、次deleteのようになります。

id   var2
1    blue
3    red
5    blue

私が望む望ましい結果は次のとおりです。

id  var
2   dog
4   dog
6   cat

これはかなり初歩的なことだと思いますが(おそらくdata.tableand match、または!duplicate? を使用)、変数varに基づいて保持および削除する方法がよくわかりません。idご協力いただきありがとうございます!

4

2 に答える 2

4

これはうまくいくかもしれません:

keep[!(keep$id %in% delete$id),]

  id var
2  2 dog
4  4 dog
6  6 cat
于 2013-08-12T18:21:26.337 に答える
0
df1 = read.table(text = 'id   var
1    dog
2    dog
3    cat
4    dog
5    dog
6    cat', header = T)
df2 = read.table(text = 'id   var2
1    blue
3    red
5    blue', header = T)

library(data.table)

# convert to data.table, set the key correctly
dt1 = data.table(df1, key = 'id')
dt2 = data.table(df2, key = 'id')

# yep, *that* simple (and also will be very fast)
dt1[!dt2]
#   id var
#1:  2 dog
#2:  4 dog
#3:  6 cat
于 2013-08-12T18:21:35.507 に答える