dplyr: как использовать фильтр «не в»


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

df %>%
 filter (!col_name %in% c('value1', 'value2', 'value3', ...))

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

Пример 1. Фильтрация строк, не содержащих значения в одном столбце

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

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

#view data frame
df

 team position points
1 A G 12
2 A G 14
3 B F 19
4 B G 24
5 C F 36
6 C C 41
7 D C 18
8 D C 29

Следующий синтаксис показывает, как фильтровать строки, в которых название команды не равно «A» или «B»:

#filter for rows where team name is not 'A' or 'B'
df %>%
 filter (!team %in% c('A', 'B'))

 team position points
1 C F 36
2 C C 41
3 D C 18
4 D C 29

Пример 2. Фильтрация строк, не содержащих значения в нескольких столбцах

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

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

#view data frame
df

 team position points
1 A G 12
2 A G 14
3 B F 19
4 B G 24
5 C F 36
6 C C 41
7 D C 18
8 D C 29

Следующий синтаксис показывает, как отфильтровать строки, в которых название команды не равно «A» и где позиция не равна «C»:

#filter for rows where team name is not 'A' and position is not 'C'
df %>%
 filter (!team %in% c('A') & !position %in% c('C'))

 team position points
1 B F 19
2 B G 24
3 C F 36

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

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.