прокатные средства по группам


Я пытаюсь сделать скользящие средства на данных, которые сгруппированы (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))

Я вижу, что длинное решение должно быть найдено здесь , но мне было интересно, почему вышеизложенное не работает

1 2

1 ответ:

По умолчанию NA удаляются, поэтому нам нужно использовать fill

 df %>% 
   group_by(a) %>% 
   mutate(newcol = rollapply(b, 3, mean, fill = NA))