如何从" 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
答案 0 :(得分:1)
我们可以先计算滚动平均值,然后再操纵datamean
列。 mutate
和ifelse
可以检查某个行号(在本例中为最后三个)并将这些数字替换为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