Come disporre le righe in un ordine personalizzato utilizzando dplyr


È possibile utilizzare la seguente sintassi di base per disporre le righe di un frame di dati in un ordine personalizzato utilizzando il pacchetto dplyr in R:

 library (dplyr)

#arrange rows in custom order based on values in 'team' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

Questo particolare esempio dispone le righe in base all’ordine personalizzato C, B, D, A per i valori della colonna della squadra , quindi in base ai valori della colonna dei punti in ordine crescente.

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

Esempio: come disporre le righe in un ordine personalizzato utilizzando dplyr

Supponiamo di avere il seguente frame di dati che mostra i punti segnati da giocatori di basket di squadre diverse:

 #create data frame
df <- data. frame (team=c('A', 'B', 'A', 'A', 'B', 'D', 'C', 'D', 'D', 'C'),
                 points=c(12, 20, 14, 34, 29, 22, 28, 15, 20, 13))

#view data frame
df

   team points
1 to 12
2 B 20
3 to 14
4 to 34
5 B 29
6 D 22
7 C 28
8 D 15
9 D 20
10 C 13

Se utilizziamo la funzione organizzare() per ordinare le righe in base ai valori nella colonna squadra , quindi in base ai valori nella colonna punti , la funzione organizzare() ordinerà le righe in base all’ordine alfabetico predefinito :

 library (dplyr)

#arrange rows in ascending order by team, then by points
df %>%
  arrange(team, points)

   team points
1 to 12
2 to 14
3 to 34
4 B 20
5 B 29
6 C 13
7 C 28
8 D 15
9 D 20
10 D 22

Le linee sono elencate in ordine alfabetico per squadra , quindi in ordine crescente per punti .

Supponiamo però di voler disporre le righe in base al seguente ordine di valori della squadra : C, B, D, A.

Possiamo usare la funzione match() all’interno della funzione organizzare() per fare questo:

 library (dplyr)

#arrange rows in custom order based on 'team' column, then by 'points' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

   team points
1 C 13
2 C 28
3 B 20
4 B 29
5 D 15
6 D 20
7 D 22
8 to 12
9 to 14
10 to 34

Le righe sono disposte nell’ordine personalizzato specificato (C, B, D, A) per la colonna della squadra , quindi per la colonna dei punti .

Nota n. 1 : la funzione di corrispondenza ottiene l’indice di riga dei valori nella colonna del team, quindi la funzione di organizzazione è in grado di ordinare in base a questi valori di indice.

Nota n.2 : per organizzare decrescendo i valori dei punti, utilizzare semplicemente desc(punti) .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in R:

Come organizzare le righe per gruppo utilizzando dplyr
Come filtrare valori univoci utilizzando dplyr
Come filtrare in base a più condizioni utilizzando dplyr

Aggiungi un commento

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