Come utilizzare un filtro condizionale in dplyr


È possibile utilizzare la seguente sintassi di base per applicare un filtro condizionale su un frame di dati utilizzando le funzioni nel pacchetto dplyr in R:

 library (dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team==' A ' ~ points > 15,
                   team==' B ' ~ points > 20,
                   TRUE ~ points > 30))

Questo particolare esempio filtra le righe in un frame di dati in cui il valore della colonna dei punti è maggiore di un determinato valore, condizionato al valore della colonna della squadra .

Correlati: un’introduzione a case_when() in dplyr

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

Esempio: come utilizzare il filtro condizionale in dplyr

Supponiamo di avere il seguente frame di dati in R che contiene informazioni su vari giocatori di basket:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
                 points=c(10, 12, 17, 18, 24, 29, 29, 34, 35))

#view data frame
df

  team points
1 to 10
2 to 12
3 to 17
4 B 18
5 B 24
6 B 29
7 C 29
8 C 34
9 C 35

Supponiamo ora di voler applicare il seguente filtro condizionale:

  • Mantieni le linee solo per i giocatori della Squadra A i cui punti sono superiori a 15.
  • Mantieni le linee solo per i giocatori della Squadra B i cui punti sono superiori a 20.
  • Mantieni le linee solo per i giocatori della squadra C con punti superiori a 30.

Possiamo usare le funzioni filter() e case_when() dal pacchetto dplyr per applicare questo filtro condizionale sul frame di dati:

 library (dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team==' A ' ~ points > 15,
                   team==' B ' ~ points > 20,
                   TRUE ~ points > 30))

  team points
1 to 17
2 B 24
3 B 29
4 C 34
5 C 35

Le righe nel frame dati vengono ora filtrate laddove il valore nella colonna dei punti è maggiore di un determinato valore, condizionato al valore nella colonna della squadra .

Nota n. 1 : nella funzione case_when() , utilizziamo TRUE nell’ultimo argomento per rappresentare tutti i valori nella colonna della squadra che non sono uguali a “A” o “B”.

Nota n.2 : puoi trovare la documentazione completa per la funzione dplyr case_when() qui .

Risorse addizionali

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

Come filtrare per numero di riga utilizzando dplyr
Come filtrare in base a più condizioni utilizzando dplyr
Come utilizzare un filtro “non incluso” in dplyr

Aggiungi un commento

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