dplyr: как использовать anti_join для поиска непревзойденных записей


Вы можете использовать функцию anti_join() из пакета dplyr в R, чтобы вернуть все строки в одном фрейме данных, которые не имеют совпадающих значений в другом фрейме данных.

Эта функция использует следующий базовый синтаксис:

anti_join(df1, df2, by= 'col_name')

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1: Используйте anti_join() с одним столбцом

Предположим, у нас есть следующие два фрейма данных в R:

#create data frames
df1 <- data.frame(team=c('A', 'B', 'C', 'D', 'E'),
 points=c(12, 14, 19, 24, 36))

df2 <- data.frame(team=c('A', 'B', 'C', 'F', 'G'),
 points=c(12, 14, 19, 33, 17))

Мы можем использовать функцию anti_join() для возврата всех строк в первом фрейме данных, у которых нет соответствующей команды во втором фрейме данных:

library(dplyr)

#perform anti join using 'team' column
anti_join(df1, df2, by='team')

 team points
1 D 24
2 E 36

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

Пример 2. Использование anti_join() с несколькими столбцами

Предположим, у нас есть следующие два фрейма данных в R:

#create data frames
df1 <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B'),
 position=c('G', 'G', 'F', 'G', 'F', 'C'),
 points=c(12, 14, 19, 24, 36, 41))

df2 <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B'),
 position=c('G', 'G', 'C', 'G', 'F', 'F'),
 points=c(12, 14, 19, 33, 17, 22))

Мы можем использовать функцию anti_join() для возврата всех строк в первом фрейме данных, у которых нет соответствующей команды и позиции во втором фрейме данных:

library(dplyr)

#perform anti join using 'team' and 'position' columns
anti_join(df1, df2, by=c('team', 'position'))

 team position points
1 A F 19
2 B C 41

Мы видим, что есть ровно две записи из первого фрейма данных, которые не имеют совпадающего имени команды и позиции во втором фрейме данных.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные функции в dplyr:

Как выбрать столбцы по индексу с помощью dplyr
Как присоединиться к нескольким фреймам данных с помощью dplyr
Как отфильтровать строки, содержащие определенную строку, с помощью dplyr