Найти элементы в столбце, которого нет в другом столбце другого фрейма данных в R

У меня есть два кадра данных, которые выглядят примерно так:

dat <- data.frame(col1 = c(1:100))
dat2 <- data.frame(col2 = c(5:105))

Я хочу найти все элементы, которые есть в dat, но не в dat2. Как я могу это сделать?

Спасибо!

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
0
28
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете использовать соединение с фильтрацией, например.

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

Другие вопросы по теме