Ответ: как использовать %in% для фильтрации строк со значением в списке.
Вы можете использовать следующий базовый синтаксис с оператором %in% в R для фильтрации строк, содержащих значение в списке:
library (dplyr) #specify team names to keep team_names <- c(' Mavs ', ' Pacers ', ' Nets ') #select all rows where team is in list of team names to keep df_new <- df %>% filter(team %in% team_names)
Этот конкретный синтаксис фильтрует фрейм данных, чтобы сохранить только строки, в которых значение столбца команды равно одному из трех значений вектора team_names , который мы указали.
В следующем примере показано, как использовать этот синтаксис на практике.
Пример. Использование %in% для фильтрации строк со значением в списке.
Предположим, у нас есть следующий кадр данных в R, содержащий информацию о различных баскетбольных командах:
#create data frame
df <- data. frame (team=c('Mavs', 'Pacers', 'Mavs', 'Celtics', 'Nets', 'Pacers'),
points=c(104, 110, 134, 125, 114, 124),
assists=c(22, 30, 35, 35, 20, 27))
#view data frame
df
team points assists
1 Mavs 104 22
2 Pacers 110 30
3 Mavs 134 35
4 Celtics 125 35
5 Nets 114 20
6 Pacers 124 27
Допустим, мы хотим отфильтровать фрейм данных, чтобы он содержал только строки, значение которых в столбце команды равно одному из следующих названий команд:
- Мавс
- Пэйсерс
- Сети
Для этого мы можем использовать следующий синтаксис с оператором %in% :
library (dplyr) #specify team names to keep team_names <- c(' Mavs ', ' Pacers ', ' Nets ') #select all rows where team is in list of team names to keep df_new <- df %>% filter(team %in% team_names) #view updated data frame df_new team points assists 1 Mavs 104 22 2 Pacers 110 30 3 Mavs 134 35 4 Nets 114 20 5 Pacers 124 27
Обратите внимание, что в столбце команды сохраняются только строки со значением «Мавс», «Пэйсерс» или «Нетс».
Если вы хотите отфильтровать строки, в которых названия команды нет в списке названий команд, просто добавьте восклицательный знак ( ! ) перед именем столбца:
library (dplyr) #specify team names to not keep team_names <- c(' Mavs ', ' Pacers ', ' Nets ') #select all rows where team is not in list of team names to keep df_new <- df %>% filter( ! team %in% team_names) #view updated data frame df_new team points assists 1 Celtics 125 35
Обратите внимание, что в столбце команды сохраняются только строки, значения которых не равны Mavs, Pacers или Nets.
Примечание . Полную документацию по функции фильтра в dplyr можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в dplyr:
Как выбрать первую строку по группе с помощью dplyr
Как фильтровать по нескольким условиям с помощью dplyr
Как фильтровать строки, содержащие определенную строку, с помощью dplyr