Come selezionare la prima riga per gruppo utilizzando dplyr
Spesso potresti voler selezionare la prima riga di ciascun gruppo utilizzando il pacchetto dplyr in R. Per farlo puoi utilizzare la seguente sintassi di base:
df %>% group_by (group_var) %>% arrange (values_var) %>% filter (row_number()== 1 )
L’esempio seguente mostra come utilizzare questa funzione nella pratica.
Esempio: seleziona la prima riga per gruppo in R
Supponiamo di avere il seguente set di dati in R:
#create dataset df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C' ), points=c(4, 9, 7, 7, 6, 13, 8, 8, 4, 17)) #view dataset df team points 1 to 4 2 to 9 3 to 7 4 B 7 5 B 6 6 B 13 7 C 8 8 C 8 9 C 4 10 C 17
Il codice seguente mostra come utilizzare il pacchetto dplyr per selezionare la prima riga per gruppo in R:
library (dplyr) df %>% group_by (team) %>% arrange (points) %>% filter (row_number()== 1 ) # A tibble: 3 x 2 # Groups: team [3] team points 1 to 4 2 C 4 3 B 6
Per impostazione predefinita, organizzare() ordina i valori in ordine crescente ma possiamo facilmente ordinare i valori in ordine decrescente:
df %>% group_by (team) %>% arrange ( desc (dots)) %>% filter (row_number()== 1 ) # A tibble: 3 x 2 # Groups: team [3] team points 1 C 17 2 B 13 3 to 9
Tieni presente che puoi facilmente modificare questo codice per selezionare l’ ennesima riga in ciascun gruppo. Basta cambiare row_number() == n .
Ad esempio, se desideri selezionare la 2a riga per gruppo, puoi utilizzare la seguente sintassi:
df %>% group_by (team) %>% arrange ( desc (dots)) %>% filter (row_number()== 2 )
Oppure puoi utilizzare la seguente sintassi per selezionare l’ultima riga per gruppo:
df %>% group_by (team) %>% arrange ( desc (dots)) %>% filter (row_number()== n() )
Risorse addizionali
Come disporre le righe in R
Come contare le osservazioni per gruppo in R
Come trovare il valore massimo per gruppo in R