Come ordinare le variabili per gruppo usando dplyr
È possibile utilizzare la seguente sintassi di base per raggruppare le variabili in dplyr:
df %>% arrange (group_var, numeric_var) %>% group_by (group_var) %>% mutate (rank = rank(numeric_var))
I seguenti esempi mostrano come utilizzare in pratica questa sintassi con il seguente frame di dati:
#create data frame df <- data. frame (team = c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'), points = c(12, 28, 19, 22, 32, 45, 22, 28, 13, 19), rebounds = c(5, 7, 7, 12, 11, 4, 10, 7, 8, 8)) #view data frame df team points rebounds 1 to 12 5 2 to 28 7 3 to 19 7 4 A 22 12 5 B 32 11 6 B 45 4 7 B 22 10 8 C 28 7 9 C 13 8 10 C 19 8
Esempio 1: classifica in ordine crescente
Il codice seguente mostra come ordinare i punti segnati dai giocatori in ordine crescente, raggruppati per squadra:
library (dplyr) #rank points scored, grouped by team df %>% arrange (team, points) %>% group_by (team) %>% mutate (rank = rank(points)) # A tibble: 10 x 4 # Groups: team [3] team points rebounds rank 1 A 12 5 1 2 A 19 7 2 3 A 22 12 3 4 A 28 7 4 5 B 22 10 1 6 B 32 11 2 7 B 45 4 3 8 C 13 8 1 9 C 19 8 2 10 C 28 7 3
Esempio 2: classifica in ordine decrescente
Possiamo anche classificare i punti ottenuti in ordine decrescente per gruppo, utilizzando un segno negativo all’interno della funzione Rank() :
library (dplyr) #rank points scored in reverse, grouped by team df %>% arrange (team, points) %>% group_by (team) %>% mutate (rank = rank(-points)) # A tibble: 10 x 4 # Groups: team [3] team points rebounds rank 1 to 12 5 4 2 A 19 7 3 3 A 22 12 2 4 A 28 7 1 5 B 22 10 3 6 B 32 11 2 7 B 45 4 1 8 C 13 8 3 9 C 19 8 2 10 C 28 7 1
Come gestire i pareggi in classifica
Possiamo usare l’argomento tie.method per specificare come dovremmo gestire i valori di parità quando ordiniamo valori numerici.
rank(points, ties. method = ' average ')
È possibile utilizzare una delle seguenti opzioni per specificare come gestire i collegamenti:
- media : (impostazione predefinita) assegna a ciascun elemento collegato il rango medio (gli elementi classificati 3° e 4° riceverebbero entrambi un rango di 3,5)
- primo : assegna il primo elemento collegato al rango più basso (gli elementi classificati in 3a e 4a posizione riceveranno rispettivamente i ranghi 3 e 4)
- min : assegna ciascun elemento collegato al rango più basso (gli elementi classificati 3° e 4° riceveranno entrambi un rango 3)
- max : assegna a ciascun elemento collegato il rango più alto (gli elementi classificati 3° e 4° riceveranno entrambi un rango 4)
- casuale : assegna a ciascun elemento in parità un rango casuale (entrambi gli elementi in parità per la 3a e 4a posizione possono ricevere l’uno o l’altro rango)
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre funzioni comuni in dplyr:
Come selezionare la prima riga per gruppo utilizzando dplyr
Come calcolare le frequenze relative utilizzando dplyr
Come ricodificare i valori utilizzando dplyr
Come sostituire NA con Zero in dplyr