dplyr:将组聚合直接添加到长数据帧

Fel*_*x S 1 r dplyr

是否可以将组聚合直接添加到长格式原始数据框中dplyr

到目前为止,我通过两个步骤完成了它:聚合和合并.dplyr合并步骤内外是否可能?

library(dplyr)
df <- data.frame(x=rnorm(15), A=factor(rep(1:3, each=5)))
df2 <- df %>% group_by(A) %>% summarise(x_mean=mean(x))
df3 <- merge(df, df2, by="A")
Run Code Online (Sandbox Code Playgroud)

结果如下:

> df3
   A      x x_mean
1  1  0.635 -0.077
2  1 -1.059 -0.077
3  1  0.408 -0.077
4  1  1.404 -0.077
5  1 -1.774 -0.077
6  2 -0.419 -0.256
7  2  0.417 -0.256
8  2 -0.443 -0.256
9  2 -0.431 -0.256
10 2 -0.403 -0.256
11 3  0.239  0.767
12 3  1.060  0.767
13 3  1.633  0.767
14 3  0.265  0.767
15 3  0.640  0.767
Run Code Online (Sandbox Code Playgroud)

the*_*ail 6

你想mutatesummarise,我认为:

df %>% group_by(A) %>% mutate(x_mean=mean(x))
Run Code Online (Sandbox Code Playgroud)

作为旁注,这是基础R解决方案极其简单的情况之一:

ave(df$x,df$A)
Run Code Online (Sandbox Code Playgroud)