使用分组摘要按因子在另一个 data.frame 列中操作

Use grouped summary to operate in another data.frame column by factor

例如,我想计算分组 data.framesummary

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))

我想做的计算是 y = abs(toy$mpg- df_summ$mean_mpg) 系数。

我的头脑告诉我 dplyr 必须能够做到这一点,但我想不出办法。 我想保留原来的 data.frame (例如,使用 mtcars %>% group_by(am) %>% mutate(...)

预期的输出看起来像这样

toy
  am mpg expected
1  1     1 23.39231
2  1     2 22.39231
3  0     3 14.14737
4  0     4 13.14737

加入两个数据框,然后执行计算:

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