Jak filtrować wiersze zawierające określony ciąg za pomocą dplyr


Często możesz chcieć filtrować wiersze w ramce danych w R, które zawierają określony ciąg. Na szczęście można to łatwo zrobić, używając funkcji filter() w pakiecie dplyr i funkcji grepl() w Base R.

W tym samouczku przedstawiono kilka przykładów praktycznego wykorzystania tych funkcji przy użyciu następującej ramki danych:

 #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

Przykład 1: Filtruj wiersze zawierające określony ciąg

Poniższy kod pokazuje, jak filtrować wiersze zawierające określony ciąg:

 #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

Powiązane: Porównanie grep() i grepl() w R: Jaka jest różnica?

Przykład 2: Filtruj wiersze zawierające co najmniej jeden ciąg znaków

Poniższy kod pokazuje, jak filtrować wiersze zawierające „Straż” lub „Napastnik” w kolumnie gracza:

 #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

Poniższy kod pokazuje, jak filtrować wiersze zawierające „P” lub „Centrum” w kolumnie czytnika:

 #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

Przykład 3: Filtruj wiersze zawierające określony ciąg

Poniższy kod pokazuje, jak filtrować (tj. usuwać) wiersze zawierające „Straż” w kolumnie odtwarzacza:

 #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

Poniższy kod pokazuje, jak filtrować (tzn. usuwać) wiersze zawierające „Strażnik” lub „Centrum” w kolumnie odtwarzacza:

 #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

Więcej samouczków R znajdziesz tutaj .

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *