Ответ 1
Если я правильно понимаю, вам нужно отрицание оператора %in%
. Что-то вроде этого должно работать:
subset(b, !(y %in% a$x))
> subset(b, !(y %in% a$x))
y
5 5
6 6
Я пытаюсь определить значения в фрейме данных, которые не совпадают, но не могу понять, как это сделать.
# 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