Как фильтровать строки, содержащие определенную строку, с помощью 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. Фильтрация строк, содержащих хотя бы одну строку
Следующий код показывает, как фильтровать строки, содержащие слова «Охранник» или «Нападающий» в столбце игрока:
#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» или «Центр» в столбце чтения:
#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. Фильтрация строк, содержащих определенную строку
Следующий код показывает, как фильтровать (т. е. удалять) строки, содержащие слово «Охранник» в столбце игрока:
#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
Следующий код показывает, как фильтровать (т. е. удалять) строки, содержащие «Охранник» или «Центр» в столбце игрока:
#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 можно найти здесь .