Como filtrar linhas contendo uma determinada string usando dplyr


Freqüentemente, você pode querer filtrar linhas em um quadro de dados em R que contém uma determinada string. Felizmente, isso é fácil de fazer usando a função filter() no pacote dplyr e a função grepl() na Base R.

Este tutorial mostra vários exemplos de uso prático dessas funções usando o seguinte data frame:

 #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

Exemplo 1: Filtrar linhas contendo uma determinada string

O código a seguir mostra como filtrar linhas que contêm uma determinada string:

 #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

Relacionado: Comparando grep() e grepl() em R: Qual é a diferença?

Exemplo 2: Filtrar linhas contendo pelo menos uma string

O código a seguir mostra como filtrar linhas contendo “Guard” ou “Forward” na coluna do player:

 #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

O código a seguir mostra como filtrar linhas contendo “P” ou “Centro” na coluna do leitor:

 #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

Exemplo 3: Filtrar linhas contendo uma determinada string

O código a seguir mostra como filtrar (ou seja, remover) linhas contendo “Guard” na coluna do player:

 #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

O código a seguir mostra como filtrar (ou seja, remover) linhas contendo “Guarda” ou “Centro” na coluna do jogador:

 #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

Você pode encontrar mais tutoriais de R aqui .

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *