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 regrouper par toutes les colonnes sauf une dans dplyr



Vous pouvez utiliser la syntaxe de base suivante pour regrouper toutes les colonnes sauf une dans un bloc de données à l’aide du package dplyr dans R :

df %>%
  group_by(across(c(-this_column)))

Cet exemple particulier regroupe le bloc de données par toutes les colonnes sauf celle appelée this_column .

Notez que le signe négatif ( ) dans la formule indique à dplyr d’exclure cette colonne particulière dans la fonction group_by() .

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : regrouper par toutes les colonnes sauf une dans dplyr

Supposons que nous ayons le bloc de données suivant dans R qui contient des informations sur divers joueurs de basket-ball :

#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
                 starter=c('Y', 'Y', 'Y', 'N', 'Y', 'N', 'N', 'N'),
                 points=c(99, 104, 119, 113))

#view data frame
df

  team position starter points
1    A        G       Y     99
2    A        G       Y    104
3    A        F       Y    119
4    A        F       N    113
5    B        G       Y     99
6    B        G       N    104
7    B        F       N    119
8    B        F       N    113

Supposons maintenant que nous souhaitions trouver la valeur maximale dans la colonne des points , regroupée dans toutes les autres colonnes du bloc de données.

Nous pouvons utiliser la syntaxe suivante pour ce faire :

library(dplyr)

#group by all columns except points column and find max points
df %>%
  group_by(across(c(-points))) %>%
  mutate(max_points = max(points))

# A tibble: 8 x 5
# Groups:   team, position, starter [6]
  team  position starter points max_points
                 
1 A     G        Y           99        104
2 A     G        Y          104        104
3 A     F        Y          119        119
4 A     F        N          113        113
5 B     G        Y           99         99
6 B     G        N          104        104
7 B     F        N          119        119
8 B     F        N          113        119

À partir du résultat, nous pouvons voir :

  • La valeur maximale de points pour tous les joueurs ayant une valeur d’équipe de A, une valeur de position de G et une valeur de départ de Y était de 104 .
  • La valeur maximale de points pour tous les joueurs ayant une valeur d’équipe de A, une valeur de position de F et une valeur de départ de Y était de 119 .
  • La valeur maximale de points pour tous les joueurs ayant une valeur d’équipe de A, une valeur de position de F et une valeur de départ de N était de 113 .

Et ainsi de suite.

Notez que nous pourrions également obtenir le même résultat si nous tapions chaque nom de colonne, à l’exception des points dans la fonction group_by() :

library(dplyr)

#group by all columns except points column and find max points
df %>%
  group_by(across(c(team, position, starter))) %>%
  mutate(max_points = max(points))

# A tibble: 8 x 5
# Groups:   team, position, starter [6]
  team  position starter points max_points
                 
1 A     G        Y           99        104
2 A     G        Y          104        104
3 A     F        Y          119        119
4 A     F        N          113        113
5 B     G        Y           99         99
6 B     G        N          104        104
7 B     F        N          119        119
8 B     F        N          113        119

Cela correspond au résultat de l’exemple précédent.

Cependant, notez qu’il est beaucoup plus facile d’exclure la colonne de points dans la fonction group_by() plutôt que de taper le nom de toutes les autres colonnes.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes à l’aide de dplyr :

Comment filtrer les lignes contenant une certaine chaîne à l’aide de dplyr
Comment calculer les fréquences relatives à l’aide de dplyr
Comment sélectionner la première ligne par groupe à l’aide de dplyr

Ajouter un commentaire

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