Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
平均值作为dplyr中的窗口函数_R_Dplyr - Fatal编程技术网

平均值作为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
from
base 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]