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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *