Come filtrare un frame di dati senza perdere le linee na utilizzando dplyr


È possibile utilizzare la seguente sintassi di base per filtrare un frame di dati senza perdere righe contenenti valori NA utilizzando le funzioni nei pacchetti dplyr e Tidyr in R:

 library (dplyr)
library (tidyr)

#filter for rows where team is not equal to 'A' (and keep rows with NA)
df <- df %>% filter((team != ' A ') %>% replace_na( TRUE ))

Tieni presente che questa formula utilizza la funzione replace_na() del pacchetto Tidyr per convertire i valori NA in TRUE in modo che non vengano rimossi dal frame di dati durante il filtraggio.

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

Esempio: filtra il frame di dati senza perdere le righe NA utilizzando 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', NA, 'A', 'B', NA, 'C', 'C', 'C'),
                 points=c(18, 13, 19, 14, 24, 21, 20, 28),
                 assists=c(5, 7, 17, 9, 12, 9, 5, 12))

#view data frame
df

  team points assists
1 to 18 5
2 <NA> 13 7
3 A 19 17
4 B 14 9
5 <NA> 24 12
6 C 21 9
7 C 20 5
8 C 28 12

Supponiamo ora di utilizzare la funzione filter() del pacchetto dplyr per filtrare il frame di dati in modo che contenga solo quelle righe il cui valore nella colonna team non è uguale ad A:

 library (dplyr)

#filter for rows where team is not equal to 'A'
df <- df %>% filter(team != ' A ')

#view updated data frame
df

  team points assists
1 B 14 9
2 C 21 9
3 C 20 5
4 C 28 12

Tieni presente che ogni riga in cui il valore nella colonna del team è uguale ad A è stata filtrata, comprese le righe in cui il valore nella colonna del team è uguale a NA.

Se vogliamo filtrare le righe in cui team è uguale ad A e mantenere le righe con valori NA, possiamo utilizzare la seguente sintassi:

 library (dplyr)
library (tidyr)

#filter for rows where team is not equal to 'A' (and keep rows with NA)
df <- df %>% filter((team != ' A ') %>% replace_na( TRUE ))

#view updated data frame
df

  team points assists
1 <NA> 13 7
2 B 14 9
3 <NA> 24 12
4 C 21 9
5 C 20 5
6 C 28 12

Tieni presente che ogni riga in cui il valore nella colonna della squadra è uguale ad A è stata filtrata, ma abbiamo mantenuto le righe in cui il valore nella colonna della squadra è uguale a NA.

Nota : puoi trovare la documentazione completa per la funzione replace_na() di Tidyr 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 *