Comment trouver la valeur maximale par groupe dans R
Souvent, vous souhaiterez peut-être trouver la valeur maximale de chaque groupe dans un bloc de données dans R. Heureusement, cela est facile à faire en utilisant les fonctions du package dplyr .
Ce didacticiel explique comment procéder à l’aide du bloc de données suivant :
#create data frame df <- data.frame(team = c('A', 'A', 'A', 'B', 'B', 'B', 'B'), position = c('G', 'F', 'F', 'G', 'G', 'G', 'F'), points = c(12, 15, 19, 22, 34, 34, 39)) #view data frame df team position points 1 A G 12 2 A F 15 3 A F 19 4 B G 22 5 B G 34 6 B G 34 7 B F 39
Exemple 1 : Trouver la valeur maximale par groupe
Le code suivant montre comment trouver la valeur maximale par équipe et par position :
library(dplyr) #find max value by team and position df %>% group_by(team, position) %>% summarise(max = max(points, na.rm=TRUE)) # A tibble: 4 x 3 # Groups: team [?] team position max 1 A F 19.0 2 A G 12.0 3 B F 39.0 4 B G 34.0
Exemple 2 : renvoyer les lignes contenant la valeur maximale par groupe
Le code suivant montre comment renvoyer les lignes contenant la valeur maximale par équipe et par poste :
library(dplyr) #find rows that contain max points by team and position df %>% group_by(team, position) %>% filter(points == max(points, na.rm=TRUE)) # A tibble: 5 x 3 # Groups: team, position [4] team position points 1 A G 12.0 2 A F 19.0 3 B G 34.0 4 B G 34.0 5 B F 39.0
Exemple 3 : renvoyer une seule ligne contenant la valeur maximale par groupe
Dans l’exemple précédent, il y avait deux joueurs qui avaient le nombre maximum de points dans l’équipe A et qui étaient tous deux en position G. Si vous souhaitez uniquement renvoyer le premier joueur avec la valeur maximale dans un groupe, vous pouvez utiliser la fonction slice(). fonctionner comme suit :
library(dplyr) #find rows that contain max points by team and position df %>% group_by(team, position) %>% slice(which.max(points)) # A tibble: 4 x 3 # Groups: team, position [4] team position points 1 A F 19.0 2 A G 12.0 3 B F 39.0 4 B G 34.0
Ressources additionnelles
Le guide complet : Comment regrouper et résumer des données dans R
Comment filtrer les lignes dans R
Comment supprimer les lignes en double dans R