我想计算一个分组summary
的{{1}},例如。
data.frame
为了稍后转换另一个共享相同因子水平的df_summ = mtcars %>% group_by(am) %>% summarise(mean_mpg=mean(mpg))
am mean_mpg
(dbl) (dbl)
1 0 17.14737
2 1 24.39231
,而不是行数。例如,计算每个组的单个值的平均值的绝对差值。
这是玩具示例
data.frame
我想做的计算是toy=data.frame(am=c(1,1,0,0),mpg=c(1,2,3,4))
因子。
我的头告诉我dplyr必须能够做到这一点,但我无法想出办法。
我想保留原始data.frame(如,使用y = abs(toy$mpg- df_summ$mean_mpg)
)
预期输出看起来像那样
mtcars %>% group_by(am) %>% mutate(...)
答案 0 :(得分:2)
加入两个数据帧,然后执行计算:
toy %>%
left_join(df_summ) %>%
mutate(y = abs(mpg - mean_mpg))
,并提供:
Joining, by = "am"
am mpg mean_mpg y
1 1 1 24.39231 23.39231
2 1 2 24.39231 22.39231
3 0 3 17.14737 14.14737
4 0 4 17.14737 13.14737