R: come utilizzare %in% per filtrare le righe con un valore nell'elenco


È possibile utilizzare la seguente sintassi di base con l’operatore %in% in R per filtrare le righe contenenti un valore in un elenco:

 library (dplyr)

#specify team names to keep
team_names <- c(' Mavs ', ' Pacers ', ' Nets ')

#select all rows where team is in list of team names to keep
df_new <- df %>% filter(team %in% team_names)

Questa particolare sintassi filtra un data frame per mantenere solo le righe in cui il valore della colonna team è uguale a uno dei tre valori del vettore team_names che abbiamo specificato.

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: utilizzo di %in% per filtrare le righe con un valore nell’elenco

Supponiamo di avere il seguente frame di dati in R che contiene informazioni su varie squadre di basket:

 #create data frame
df <- data. frame (team=c('Mavs', 'Pacers', 'Mavs', 'Celtics', 'Nets', 'Pacers'),
                 points=c(104, 110, 134, 125, 114, 124),
                 assists=c(22, 30, 35, 35, 20, 27))

#view data frame
df

     team points assists
1 Mavs 104 22
2 Pacers 110 30
3 Mavs 134 35
4 Celtics 125 35
5 Nets 114 20
6 Pacers 124 27

Diciamo che vogliamo filtrare il data frame per contenere solo le righe il cui valore nella colonna team è uguale a uno dei seguenti nomi di team:

  • Mav
  • Pacers
  • Reti

Per fare ciò possiamo usare la seguente sintassi con l’operatore %in% :

 library (dplyr)

#specify team names to keep
team_names <- c(' Mavs ', ' Pacers ', ' Nets ')

#select all rows where team is in list of team names to keep
df_new <- df %>% filter(team %in% team_names)

#view updated data frame
df_new

    team points assists
1 Mavs 104 22
2 Pacers 110 30
3 Mavs 134 35
4 Nets 114 20
5 Pacers 124 27

Tieni presente che vengono mantenute solo le righe con un valore Mavs, Pacers o Nets nella colonna della squadra .

Se desideri filtrare le righe in cui il nome della squadra non è presente nell’elenco dei nomi delle squadre, aggiungi semplicemente un punto esclamativo ( ! ) davanti al nome della colonna:

 library (dplyr)

#specify team names to not keep
team_names <- c(' Mavs ', ' Pacers ', ' Nets ')

#select all rows where team is not in list of team names to keep
df_new <- df %>% filter( ! team %in% team_names)

#view updated data frame
df_new

     team points assists
1 Celtics 125 35

Tieni presente che vengono mantenute solo le righe il cui valore non è uguale a Mavs, Pacers o Nets nella colonna della squadra .

Nota : puoi trovare la documentazione completa della funzione filtro in dplyr qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni in dplyr:

Come selezionare la prima riga per gruppo utilizzando dplyr
Come filtrare in base a più condizioni utilizzando dplyr
Come filtrare le righe contenenti una determinata stringa utilizzando dplyr

Aggiungi un commento

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