是否可以将组聚合直接添加到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")
结果是:
> 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
答案 0 :(得分:6)
我想mutate
而不是summarise
我认为:
df %>% group_by(A) %>% mutate(x_mean=mean(x))
作为旁注,这是基础R解决方案极其简单的情况之一:
ave(df$x,df$A)