Find the Maximum Value by Group in R
Find the Maximum Value by Group in R, you may frequently want to determine the highest value for each group in a data frame. Fortunately, utilizing the dplyr package’s methods makes this task simple.
Interactive 3d plot in R-Quick Guide – Data Science Tutorials
The following data frame is used in this tutorial to demonstrate how to achieve that.
Let’s create a data frame
df <- data.frame(team = c('T1', 'T1', 'T1', 'T2', 'T2', 'T2', 'T2'), position = c('R1', 'R2', 'R1', 'R1', 'R1', 'R1', 'R2'), points = c(122, 135, 129, 322, 334, 434, 139))
Let’s view the data frame
df
team position points 1 T1 R1 122 2 T1 R2 135 3 T1 R1 129 4 T2 R1 322 5 T2 R1 334 6 T2 R1 434 7 T2 R2 139
Example 1: Find Max Value by Group
The maximum value for team and position can be found using the code below.
Arrange Data by Month in R with example – Data Science Tutorials
library(dplyr)
To find the maximum value by team and position
df %>% group_by(team, position) %>% summarise(max = max(points, na.rm=TRUE))
team position max <chr> <chr> <dbl> 1 T1 R1 129 2 T1 R2 135 3 T2 R1 434 4 T2 R2 139
Example 2: Retrieve Rows with Max Value by Group
The code below can be used to find the maximum value for the team and position.
How to add columns to a data frame in R – Data Science Tutorials
library(dplyr)
To locate rows with the highest number of points by team and position
df %>% group_by(team, position) %>% filter(points == max(points, na.rm=TRUE))
team position points <chr> <chr> <dbl> 1 T1 R2 135 2 T1 R1 129 3 T2 R1 434 4 T2 R2 139
Example 3: Return a Single Row with the Maximum Value for the Group
In the preceding illustration, team A had two players in positions G who each had the maximum number of points.
Create new variables from existing variables in R – Data Science Tutorials
Use the slice() function as follows if you just want to retrieve the first player in a group with the maximum value.
df %>% group_by(team, position) %>% slice(which.max(points))
team position points <chr> <chr> <dbl> 1 T1 R1 129 2 T1 R2 135 3 T2 R1 434 4 T2 R2 139