Як фільтрувати рядки, що містять певний рядок, за допомогою 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
3S 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: фільтрування рядків, які містять принаймні один рядок

У наведеному нижче коді показано, як фільтрувати рядки, що містять «Guard» або «Forward» у стовпці гравця:

 #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
3S Forward 19 7
4 P Forward 22 12

Наступний код показує, як фільтрувати рядки, що містять «P» або «Center» у стовпці читача:

 #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» у стовпці гравця:

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

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

Наступний код показує, як відфільтрувати (тобто видалити) рядки, що містять «Guard» або «Center» у стовпці гравця:

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

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

Ви можете знайти більше навчальних посібників з R тут .

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *