按组滚动方式

use*_*672 5 r mean zoo dplyr

我正在尝试对分组 ( dplyr::group_by) 的数据进行滚动意味着 - 我无法理解为什么这不起作用的原因:

set.seed(1)
library(dplyr)
library(zoo)
df <- data.frame(a=sample(LETTERS[1:2], replace= T, 10),
                 b=rnorm(20), stringsAsFactors = F)
df %>% 
  group_by(a) %>% 
  mutate(rollapply(b, 3, mean))
Run Code Online (Sandbox Code Playgroud)

我可以看到这里可以找到一个冗长的解决方案,但想知道为什么上面的方法不起作用

akr*_*run 5

默认情况下,它们NA被删除,所以我们需要使用fill

 df %>% 
   group_by(a) %>% 
   mutate(newcol = rollapply(b, 3, mean, fill = NA))
Run Code Online (Sandbox Code Playgroud)