Come filtrare le righe contenenti una determinata stringa utilizzando dplyr


Spesso potresti voler filtrare le righe in un frame di dati in R che contengono una determinata stringa. Fortunatamente, questo è facile da fare utilizzando la funzione filter() nel pacchetto dplyr e la funzione grepl() in Base R.

Questo tutorial mostra diversi esempi di utilizzo pratico di queste funzioni utilizzando il seguente frame di dati:

 #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

Esempio 1: filtrare le righe contenenti una determinata stringa

Il codice seguente mostra come filtrare le righe contenenti una determinata stringa:

 #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

Correlati: Confronto grep() e grepl() in R: qual è la differenza?

Esempio 2: filtrare le righe contenenti almeno una stringa

Il codice seguente mostra come filtrare le righe contenenti “Guardia” o “Avanti” nella colonna del giocatore:

 #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

Il codice seguente mostra come filtrare le righe contenenti “P” o “Centro” nella colonna del lettore:

 #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

Esempio 3: filtrare le righe contenenti una determinata stringa

Il codice seguente mostra come filtrare (ovvero rimuovere) le righe contenenti “Guard” nella colonna del giocatore:

 #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

Il codice seguente mostra come filtrare (ovvero rimuovere) le righe contenenti “Guardia” o “Centro” nella colonna del giocatore:

 #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

Puoi trovare altri tutorial su R qui .

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *