A: come utilizzare aggregate() e non eliminare le righe con na
È possibile utilizzare la funzione Aggregate() in R per calcolare le statistiche di riepilogo per le variabili in un frame di dati.
Per impostazione predefinita, se la funzione Aggregate() incontra una riga in un frame di dati con uno o più valori NA, rimuoverà semplicemente la riga durante l’esecuzione dei calcoli.
Ciò può portare a conseguenze impreviste durante l’esecuzione dei calcoli.
Per evitare questo comportamento, puoi utilizzare l’argomento na.action=NULL nella funzione Aggregate() .
L’esempio seguente mostra come utilizzare questo argomento nella pratica.
Esempio: utilizzare aggegate() in R e non eliminare le righe con NA
Supponiamo di avere il seguente frame di dati in R che mostra i punti e gli assist dei giocatori di basket di diverse squadre:
#create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C'), points=c(5, 9, 12, 14, 14, 13, 10, 6, 15, 18), assists=c(NA, 4, 4, 5, 3, 6, 8, 4, 10, NA)) #view data frame df team points assists 1 to 5 NA 2 to 9 4 3 to 12 4 4 to 14 5 5 A 14 3 6 B 13 6 7 B 10 8 8 B 6 4 9 C 15 10 10 C 18 NA
Supponiamo ora di provare ad utilizzare la funzione Aggregate() per calcolare la somma dei punti e degli assist , raggruppati per squadra :
#attempt to calculate sum of points and assists, grouped by team aggregate(. ~ team, data=df, FUN=sum, na. rm = TRUE ) team points assists 1 A 49 16 2 B 29 18 3 C 15 10
Il risultato sembra mostrarci la somma di punti e assist per squadra, ma le righe con i valori NA sono state effettivamente rimosse durante l’esecuzione di questi calcoli.
Possiamo confermarlo osservando il data frame originale e vedendo che la squadra C ha due valori nella colonna dei punti :
- 15
- 18
Quindi, la squadra C dovrebbe avere un totale di 33 punti, ma il risultato ne mostra solo 15.
Questo perché la riga con un valore in punti pari a 18 ha un valore NA nella colonna degli assist , il che significa che questa riga non è stata effettivamente utilizzata durante il calcolo della somma dei punti della squadra rispetto al punteggio.
Per garantire che le righe con valori NA non vengano rimosse durante l’esecuzione dei calcoli, dobbiamo utilizzare l’argomento na.action=NULL come segue:
#calculate sum of points and assists, grouped by team (don't drop NA rows) aggregate(. ~ team, data=df, FUN=sum, na. rm = TRUE , na. action =NULL) team points assists 1 A 54 16 2 B 29 18 3 C 33 10
Si noti che la funzione Aggregate() restituisce correttamente una somma di valori in punti per la squadra C pari a 33 questa volta.
Nota : l’argomento na.rm=TRUE specifica che i valori NA devono essere ignorati quando si esegue un calcolo in una colonna specifica.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in R:
Come utilizzare la funzione summary() in R
Come calcolare la media per gruppo in R
Come calcolare le statistiche descrittive in R