Как я могу выбирать строки из фрейма данных, которые не совпадают?

Я пытаюсь определить значения в фрейме данных, которые не совпадают, но не могу понять, как это сделать.

# 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, и не понимают, какую функцию использовать.

Ответ 1

Если я правильно понимаю, вам нужно отрицание оператора %in%. Что-то вроде этого должно работать:

subset(b, !(y %in% a$x))

> subset(b, !(y %in% a$x))
  y
5 5
6 6

Ответ 2

Попробуйте установить разностную функцию 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