是否可以将组聚合直接添加到长格式原始数据框中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)
你想mutate不summarise,我认为:
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)