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

时间:2014-07-22 10:24:57

标签: 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")

结果是:

> 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

1 个答案:

答案 0 :(得分:6)

我想mutate而不是summarise我认为:

df %>% group_by(A) %>% mutate(x_mean=mean(x))

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

ave(df$x,df$A)