Learn

group_by() can also be used with the dplyr function mutate() to add columns to a data frame that involve per-group metrics.

Consider the same educational technology company’s enrollments table from the previous exercise:

user_id course quiz_score
1234 learn_r 80
1234 learn_python 95
4567 learn_r 90
4567 learn_python 55

You want to add a new column to the data frame that stores the difference between a row’s quiz_score and the average quiz_score for that row’s course. To add the column:

enrollments %>% group_by(course) %>% mutate(diff_from_course_mean = quiz_score - mean(quiz_score))
  • group_by() groups the data frame by course into two groups: learn-r and learn-python
  • mutate() will add a new column diff_from_course_mean which is calculated as the difference between a row’s individual quiz_score and the mean(quiz_score) for that row’s group (course)

The resulting data frame would look like this:

user_id course quiz_score diff_from_course_mean
1234 learn_r 80 -5
1234 learn_python 95 20
4567 learn_r 90 5
4567 learn_python 55 -20
  • The average quiz_score for the learn-r course is 85, so diff_from_course_mean is calculated as quiz_score - 85 for all the rows of enrollments with a value of learn-r in the course column.
  • The average quiz_score for the learn-python course is 75, so diff_from_course_mean is calculated as quiz_score - 75 for all the rows of enrollments with a value of learn-python in the course column.

Instructions

1.

You want to be able to tell how expensive each order is compared to the average price of orders with the same shoe_type.

Group orders by shoe_type and create a new column named diff_from_shoe_type_mean that stores the difference in price between an orders price and the average price of orders with the same shoe_type. Save the result to diff_from_mean, and view it.

Don’t forget to include na.rm = TRUE as an argument in the summary function you call!

Take this course for free

Mini Info Outline Icon
By signing up for Codecademy, you agree to Codecademy's Terms of Service & Privacy Policy.

Or sign up using:

Already have an account?