Rである母集団のdata.frameから除きたい集団data.frameがあって、その結果が欲しいとき

R

母集団がこんな感じで

population <- data.frame(id=c(1, 2, 3), data=c('a', 'b', 'c'))

  id data
1  1    a
2  2    b
3  3    c

除きたいのがこんな感じのとき

except <- data.frame(id=c(2), data=c('b'))

  id data
1  2    b

で、こんな感じで!とinを使えばいいです

population[!(population$id %in% except$id),,drop=FALSE]

  id data
1  1    a
3  3    c

覚えておいた方がいいのは「drop=FALSE」の部分で、これがないと1列(ベクトル)の時に結果の次元が落ちてしまう(idってのが欲しいのに1 3が返ってくる)

> population <- data.frame(id=c(1, 2, 3))
> except <- data.frame(id=c(2))
> population[!(population$id %in% except$id),]
[1] 1 3

1つめのカンマの前で「どういう行を出すか」、2つめのカラムの前で「どういう列を出すか」(今回の場合は何もないので全て)、その後にoptionだと思えば良い