如何计算 运行 均值从 "datamean" 的第 4 列开始(给定宽度=4)并且前三列为 "NA"?

How to calculate the running mean starting from the 4th column of "datamean" (given the width=4) and have first three columns as "NA"?

如何从 "datamean" 的第 4 列开始计算 运行 均值(因为宽度=4)并且前三列和后三列为 "NA" 或为空?

 require(zoo)    
 data <- zoo(seq(1:10))
 datamean <- rollapply(data, width=4, by=1, FUN=mean, align="left")
 cbind(data, datamean)

当前输出是这样的:

    data datamean
1     1      2.5
2     2      3.5
3     3      4.5
4     4      5.5
5     5      6.5
6     6      7.5
7     7      8.5
8     8       NA
9     9       NA
10   10       NA

但是我想要:

    data datamean
1     1      NA
2     2      NA
3     3      NA
4     4      2.5
5     5      3.5
6     6      4.5
7     7      5.5
8     8      NA
9     9      NA
10   10      NA

我们可以先计算滚动平均值,然后再对datamean列进行操作。 mutateifelse 可以检查某个行号(在本例中为最后三个)并将这些数字替换为 NA。 dt2 是最终输出。

library(dplyr)
require(zoo)

dt <- data_frame(data = zoo(seq(1:10)))

dt2 <- dt %>%
  mutate(datamean = rollmean(data, k = 4, fill = NA, align = "right")) %>%
  mutate(datamean = ifelse(row_number() %in% n():(n() - 2), NA, datamean))

dt2
# A tibble: 10 x 2
        data datamean
   <S3: zoo>    <dbl>
 1         1       NA
 2         2       NA
 3         3       NA
 4         4      2.5
 5         5      3.5
 6         6      4.5
 7         7      5.5
 8         8       NA
 9         9       NA
10        10       NA