我正在尝试使用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语言的新手,我似乎在任何地方都找不到答案。
使用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)