How to calculate conditional mean in R (With Examples)

Calculating conditional means in R involves using the aggregate function to group the data into categories and then calculating the mean of the subset of data that falls under each category. For example, you can use the aggregate function to group a data frame by a particular column and then calculate the mean of a different column for each group. This can be done by passing the function two arguments, the data frame and the list of columns that you would like to group by and calculate the mean of. To further illustrate this concept, we will provide a few examples of how to calculate conditional means in R.


You can use the following syntax to calculate a conditional mean in R:

mean(df[df$team == 'A', 'points'])

This calculates the mean of the ‘points’ column for every row in the data frame where the ‘team’ column is equal to ‘A.’

The following examples show how to use this syntax in practice with the following data frame:

#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B'),
                 points=c(99, 90, 93, 86, 88, 82),
                 assists=c(33, 28, 31, 39, 34, 30))

#view data frame
df

  team points assists
1    A     99      33
2    A     90      28
3    A     93      31
4    B     86      39
5    B     88      34
6    B     82      30

Example 1: Calculate Conditional Mean for Categorical Variable

The following code shows how to calculate the mean of the ‘points’ column for only the rows in the data frame where the ‘team’ column has a value of ‘A.’

#calculate mean of 'points' column for rows where team equals 'A'
mean(df[df$team == 'A', 'points'])

[1] 94

The mean value in the ‘points’ column for the rows where ‘team’ is equal to ‘A’ is 94.

We can manually verify this by calculating the average of the points values for only the rows where ‘team’ is equal to ‘A’:

  • Average of Points: (99 + 90 + 93) / 3 = 94

Example 2: Calculate Conditional Mean for Numeric Variable

The following code shows how to calculate the mean of the ‘assists’ column for only the rows in the data frame where the ‘points’ column has a value greater than or equal to 90.

#calculate mean of 'assists' column for rows where 'points' >= 90
mean(df[df$points >= 90, 'assists'])

[1] 30.66667

The mean value in the ‘assists’ column for the rows where ‘points’ is greater than or equal to 90 is 30.66667.

We can manually verify this by calculating the average of the assists values for only the rows where points is greater than or equal to 90:

  • Average of Assists: (33 + 28 + 31) / 3 = 30.66667

The following tutorials explain how to calculate other mean values in R:

x