データフレーム内の一致しない値を特定しようとしていますが、これを行う方法がわかりません。
_# make data frame
a <- data.frame( x = c(1,2,3,4))
b <- data.frame( y = c(1,2,3,4,5,6))
# select only values from b that are not in 'a'
# attempt 1:
results1 <- b$y[ !a$x ]
# attempt 2:
results2 <- b[b$y != a$x,]
_
a = c(1,2,3)
が機能する場合、a
はb
の倍数であるためです。ただし、データフレームy
からすべての値を選択しようとしていますが、これらはx
に含まれておらず、使用する関数がわかりません。
正しく理解できれば、_%in%
_演算子の否定が必要です。このような何かが動作するはずです:
subset(b, !(y %in% a$x))
_> subset(b, !(y %in% a$x))
y
5 5
6 6
_
差分設定関数setdiff
を試してください。だからあなたは持っているだろう
results1 = setdiff(a$x, b$y) # elements in a$x NOT in b$y
results2 = setdiff(b$y, a$x) # elements in b$y NOT in a$x
このタスクにdplyr
を使用することもできます。 b
にあるがa
にないものを見つけるには:
library(dplyr)
anti_join(b, a, by = c("y" = "x"))
# y
# 1 5
# 2 6