У меня есть два кадра данных, которые выглядят примерно так:
dat <- data.frame(col1 = c(1:100))
dat2 <- data.frame(col2 = c(5:105))
Я хочу найти все элементы, которые есть в dat
, но не в dat2
. Как я могу это сделать?
Спасибо!
Вы можете использовать соединение с фильтрацией, например.
dplyr::anti_join(dat,dat2, by = c("col1" = "col2"))
или напрямую через filter
library(dplyr)
dat %>% filter(!col1 %in% dat2$col2)
Выход:
col1
1 1
2 2
3 3
4 4
Вы можете использовать setdiff
:
setdiff(dat$col1, dat2$col2)
#[1] 1 2 3 4
Вариант с использованием data.table
:
library(data.table)
setDT(dat)
setDT(dat2)
dat[!dat2, on = .(col1 = col2)]
Выход:
col1
1: 1
2: 2
3: 3
4: 4