平均值作为dplyr中的窗口函数
我想计算组平均值,但将它们保存为原始数据旁边的向量。在平均值作为dplyr中的窗口函数,r,dplyr,R,Dplyr,我想计算组平均值,但将它们保存为原始数据旁边的向量。在dplyr中是否有一种有效的方法来实现这一点 原始数据帧: dat <- data.frame( group = c("A","A","A","B","B","B"), value = c(4, 5, 6, 7, 8, 9) ) > dat group value 1 A 4 2 A 5 3 A 6 4 B 7 5 B 8 6
dplyr
中是否有一种有效的方法来实现这一点
原始数据帧
:
dat <- data.frame(
group = c("A","A","A","B","B","B"),
value = c(4, 5, 6, 7, 8, 9)
)
> dat
group value
1 A 4
2 A 5
3 A 6
4 B 7
5 B 8
6 B 9
dat%
分组依据(分组)%>%
变异(组平均值=平均值)
dat
来源:本地数据帧[6 x 3]
分组:分组[2]
组值组平均值
(fctr)(dbl)(dbl)
1 A 4 5
2 A 5 5
3 A 6 5
4 B 7 8
5 B 8 8
6 B 9 8
我们可以使用ave
frombase R
dat$groupmeanvalue <- with(dat, ave(value, group))
dat$groupmeanvalue
#[1] 5 5 5 8 8 8
这可能是一个更好的副本,因为它使用
mutate
:
dat <- dat %>%
group_by(group) %>%
mutate(groupmeanvalue = mean(value))
dat
Source: local data frame [6 x 3]
Groups: group [2]
group value groupmeanvalue
(fctr) (dbl) (dbl)
1 A 4 5
2 A 5 5
3 A 6 5
4 B 7 8
5 B 8 8
6 B 9 8
dat$groupmeanvalue <- with(dat, ave(value, group))
dat$groupmeanvalue
#[1] 5 5 5 8 8 8
library(data.table)
setDT(dat)[, groupmeanvalue := mean(value), by = group]