使用dplyr将汇总列添加到数据框

udd*_*903 2 r dplyr

我正在尝试使用dplyr将聚合列添加到数据框。这是我想到的一个例子:

gender <- c("male", "female", "male")
age <- c(25, 30, 56)
weight <- c(160, 110, 220)
mydata <- data.frame(gender, age, weight)
Run Code Online (Sandbox Code Playgroud)

先按性别将数据框mydata分组,然后再进行汇总计算以按性别查找平均权重:

library(dplyr)
mydata <- group_by(mydata, gender)
mydata2 <- summarise(mydata, wt=mean(weight))
Run Code Online (Sandbox Code Playgroud)

有没有办法在与上述相同的步骤中将平均权重的列添加到原始数据帧中?在SQL中,我将使用以下代码行实现此目的:

SELECT gender, age, weight, avg(weight) as avg_wt FROM mydata GROUP BY gender
Run Code Online (Sandbox Code Playgroud)

我意识到这是一个非常基本的问题,但是我是R语言的新手,我似乎在任何地方都找不到答案。

Sum*_*edh 5

使用mutate代替summarise

mydata %>% group_by(gender) %>% mutate(wt = mean(weight))


#Source: local data frame [3 x 4]
#Groups: gender [2]
#
#  gender   age weight    wt
#  (fctr) (dbl)  (dbl) (dbl)
#1   male    25    160   190
#2 female    30    110   110
#3   male    56    220   190
Run Code Online (Sandbox Code Playgroud)