Comment organiser les lignes dans un ordre personnalisé à l’aide de dplyr
Vous pouvez utiliser la syntaxe de base suivante pour organiser les lignes d’un bloc de données dans un ordre personnalisé à l’aide du package dplyr dans R :
library(dplyr) #arrange rows in custom order based on values in 'team' column df %>% arrange(match(team, c('C', 'B', 'D', 'A')), points)
Cet exemple particulier organise les lignes en fonction de l’ordre personnalisé C, B, D, A pour les valeurs de la colonne d’équipe , puis selon les valeurs de la colonne de points par ordre croissant.
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : Comment organiser les lignes dans un ordre personnalisé à l’aide de dplyr
Supposons que nous ayons le bloc de données suivant qui montre les points marqués par les basketteurs de différentes équipes :
#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 A 12
2 B 20
3 A 14
4 A 34
5 B 29
6 D 22
7 C 28
8 D 15
9 D 20
10 C 13
Si nous utilisons la fonction arrange() pour trier les lignes en fonction des valeurs de la colonne équipe , alors en fonction des valeurs de la colonne points , la fonction arrange() triera les lignes en fonction de l’ordre alphabétique par défaut :
library(dplyr)
#arrange rows in ascending order by team, then by points
df %>%
arrange(team, points)
team points
1 A 12
2 A 14
3 A 34
4 B 20
5 B 29
6 C 13
7 C 28
8 D 15
9 D 20
10 D 22
Les lignes sont classées par ordre alphabétique par équipe , puis par ordre croissant par points .
Cependant, supposons que nous souhaitions plutôt organiser les lignes en fonction de l’ordre suivant des valeurs d’équipe : C, B, D, A.
Nous pouvons utiliser la fonction match() dans la fonction arrange() pour ce faire :
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 A 12 9 A 14 10 A 34
Les lignes sont disposées dans l’ordre personnalisé que nous avons spécifié (C, B, D, A) pour la colonne équipe , puis par colonne de points .
Remarque n°1 : La fonction match obtient l’index de ligne des valeurs dans la colonne d’équipe, puis la fonction arrange est capable de trier en fonction de ces valeurs d’index.
Remarque n°2 : Pour organiser en fonction des valeurs de points décroissantes, utilisez simplement desc(points) à la place.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :
Comment organiser les lignes par groupe à l’aide de dplyr
Comment filtrer les valeurs uniques à l’aide de dplyr
Comment filtrer selon plusieurs conditions à l’aide de dplyr