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