Hoe de maximale waarde per groep in r te vinden
Vaak wil je misschien de maximale waarde van elke groep in een dataframe in R vinden. Gelukkig is dit eenvoudig te doen met behulp van functies in het dplyr- pakket.
In deze tutorial wordt uitgelegd hoe u dit kunt doen met behulp van het volgende dataframe:
#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 AG 12 2 AF15 3 FY 19 4 BG 22 5 BG 34 6 BG 34 7 BF 39
Voorbeeld 1: Zoek de maximale waarde per groep
De volgende code laat zien hoe u de maximale waarde per team per positie kunt vinden:
library(dplyr) #find max value by team and position df %>% group_by (team, position) %>% summarize (max = max(points, na.rm= TRUE )) # A tibble: 4 x 3 # Groups: team [?] team position max 1AF 19.0 2 AG 12.0 3 BF 39.0 4 BG 34.0
Voorbeeld 2: Return-rijen met de maximale waarde per groep
De volgende code laat zien hoe u rijen retourneert die de maximale waarde per team en per positie bevatten:
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 AG 12.0 2AF 19.0 3 BG 34.0 4 BG 34.0 5BF 39.0
Voorbeeld 3: Retourneert een enkele rij met de maximale waarde per groep
In het vorige voorbeeld waren er twee spelers die het maximale aantal punten hadden in team A en die beiden op positie G stonden. Als je alleen de eerste speler met de maximale waarde aan een groep wilt teruggeven, kun je de slice( ) functie. werk als volgt:
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 1AF 19.0 2 AG 12.0 3 BF 39.0 4 BG 34.0
Aanvullende bronnen
De complete gids: gegevens groeperen en samenvatten in R
Rijen filteren in R
Hoe dubbele regels in R te verwijderen