使用 dplyr 计算与组平均值的差异

时间:2021-03-25 16:26:33

标签: r dplyr

我想计算每行与其组平均值的差异。有没有办法在不创建中间表并加入它的情况下做到这一点?

group_summary <- mtcars %>%
  group_by(cyl) %>%
  summarize(mean_mpg = mean(mpg))

left_join(mtcars, group_summary) %>%
  mutate(mpg_diff_from_group = mpg - mean_mpg)

3 个答案:

答案 0 :(得分:3)

是的,以下无需中间表即可工作:

mtcars %>%
    group_by(cyl) %>%
    mutate(grouped_diff = mpg - mean(mpg)) %>%
    ungroup()

答案 1 :(得分:0)

mtcars  %>% group_by(cyl)   %>% mutate(mean_mpg = mean(mpg), mpg_diff_from_grp= mpg - mean_mpg)  %>% ungroup() 

答案 2 :(得分:0)

与前面的代码类似,您也可以不使用 mutate 来汇总数据,然后再次取消分组

mtcars %>%
  group_by(cyl) %>%
  summarise(grouped_diff = mpg - mean(mpg)) %>%
  ungroup