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


Часто вам может понадобиться отфильтровать строки во фрейме данных в R, которые содержат определенную строку. К счастью, это легко сделать с помощью функции filter() из пакета dplyr и функции grepl() в Base R.

В этом руководстве показано несколько примеров использования этих функций на практике с использованием следующего фрейма данных:

#create data frame
df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'),
 points = c(12, 15, 19, 22, 32),
 rebounds = c(5, 7, 7, 12, 11))

#view data frame
df

 player points rebounds
1 P Guard 12 5
2 S Guard 15 7
3 S Forward 19 7
4 P Forward 22 12
5 Center 32 11

Пример 1. Фильтрация строк, содержащих определенную строку

Следующий код показывает, как фильтровать строки, содержащие определенную строку:

#load dplyr package
library(dplyr)

#filter rows that contain the string 'Guard' in the player column
df %>% filter ( grepl('Guard', player))

 player points rebounds
1 P Guard 12 5
2 S Guard 15 7

Связанный: Сравнение grep() и grepl() в R: в чем разница?

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

В следующем коде показано, как отфильтровать строки, содержащие «Страж» или «Вперед» в столбце игрока:

#filter rows that contain 'Guard' or 'Forward' in the player column
df %>% filter ( grepl('Guard|Forward', player))

 player points rebounds
1 P Guard 12 5
2 S Guard 15 7
3 S Forward 19 7
4 P Forward 22 12

В следующем коде показано, как отфильтровать строки, содержащие «P» или «Центр» в столбце проигрывателя:

#filter rows that contain 'P' or 'Center' in the player column
df %>% filter ( grepl('P|Center', player))

 player points rebounds
1 P Guard 12 5
2 P Forward 22 12
3 Center 32 11

Пример 3. Отфильтровать строки, содержащие определенную строку

В следующем коде показано, как отфильтровать (т.е. удалить) строки, содержащие «Guard» в столбце player:

#filter out rows that contain 'Guard' in the player column
df %>% filter (! grepl('Guard', player))

 player points rebounds
1 S Forward 19 7
2 P Forward 22 12
3 Center 32 11

Следующий код показывает, как отфильтровать (т. е. удалить) строки, содержащие «Страж» или «Центр» в столбце игрока:

#filter out rows that contain 'Guard' or 'Center' in the player column
df %>% filter (! grepl('Guard|Center', player))

 player points rebounds
1 S Forward 19 7
2 P Forward 22 12

Вы можете найти больше руководств по R здесь .

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