Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Comment classer les variables par groupe à l’aide de dplyr



Vous pouvez utiliser la syntaxe de base suivante pour classer les variables par groupe dans dplyr :

df %>% arrange(group_var, numeric_var) %>%
    group_by(group_var) %>% 
    mutate(rank = rank(numeric_var))

Les exemples suivants montrent comment utiliser cette syntaxe en pratique avec le bloc de données suivant :

#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     A     12        5
2     A     28        7
3     A     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

Exemple 1 : Classement par ordre croissant

Le code suivant montre comment classer les points marqués par les joueurs par ordre croissant, regroupés par équipe :

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

Exemple 2 : Classement par ordre décroissant

On peut également classer les points marqués par ordre décroissant par groupe, en utilisant un signe négatif au sein de la fonction 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 A         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

Comment gérer les égalités dans le classement

Nous pouvons utiliser l’argument tie.method pour spécifier comment nous devons gérer les égalités lors du classement des valeurs numériques.

rank(points, ties.method='average')

Vous pouvez utiliser l’une des options suivantes pour spécifier comment gérer les liens :

  • moyenne : (Par défaut) Attribue à chaque élément lié le rang moyen (les éléments classés en 3ème et 4ème position recevraient tous deux un rang de 3,5)
  • premier : Attribue le premier élément lié au rang le plus bas (les éléments classés en 3ème et 4ème positions recevraient respectivement les rangs 3 et 4)
  • min : Assigne chaque élément lié au rang le plus bas (les éléments classés en 3ème et 4ème position recevraient tous deux un rang de 3)
  • max : Attribue à chaque élément lié le rang le plus élevé (les éléments classés en 3ème et 4ème position recevraient tous deux un rang de 4)
  • aléatoire : attribue à chaque élément à égalité un rang aléatoire (l’un ou l’autre des éléments à égalité pour la 3ème et la 4ème position pourrait recevoir l’un ou l’autre rang)

Ressources additionnelles

Les didacticiels suivants expliquent comment exécuter d’autres fonctions courantes dans dplyr :

Comment sélectionner la première ligne par groupe à l’aide de dplyr
Comment calculer les fréquences relatives à l’aide de dplyr
Comment recoder des valeurs à l’aide de dplyr
Comment remplacer NA par Zero dans dplyr

Ajouter un commentaire

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