Zoo程序包中的回滚声返回意外结果

问题描述 投票:0回答:1

我正在使用此代码:

library(dplyr)
library(lubridate)
library(zoo)

temp <- data.frame(
        date = as.Date(c("2015-01-01", "2015-02-01", "2015-03-01", "2015-04-01", "2015-05-01", "2015-06-01", "2015-07-01", "2015-08-01", "2015-09-01", "2015-10-01", "2015-11-01", "2015-12-01"))
        , value = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
    ) %>%
    arrange(
        date
    ) %>%
    mutate(
        value_rollmean = rollmean(value, k = 2, fill = NA)
    ) 

temp

奇异地返回:

         date value value_rollmean
1  2015-12-01    12             NA
2  2015-11-01    11           11.5
3  2015-10-01    10           10.5
4  2015-09-01     9            9.5
5  2015-08-01     8            8.5
6  2015-07-01     7            7.5
7  2015-06-01     6            6.5
8  2015-05-01     5            5.5
9  2015-04-01     4            4.5
10 2015-03-01     3            3.5
11 2015-02-01     2            2.5
12 2015-01-01     1            1.5 

为什么最后输入不适用2015年12月1日,而不是第一次输入2015年1月1日?

预期输出:

         date value value_rollmean
1  2015-01-01     1             NA
2  2015-02-01     2             NA
3  2015-03-01     3            1.5
4  2015-04-01     4            2.5
5  2015-05-01     5            3.5
6  2015-06-01     6            4.5
7  2015-07-01     7            5.5
8  2015-08-01     8            6.5
9  2015-09-01     9            7.5
10 2015-10-01    10            8.5
11 2015-11-01    11            9.5
12 2015-12-01    12           10.5
r zoo
1个回答
0
投票

看来我必须对日期进行排序(为什么有人会尝试在另一个方向上移动均线?!]

library(dplyr)
library(lubridate)
library(zoo)

temp <- data.frame(
        date = as.Date(c("2015-01-01", "2015-02-01", "2015-03-01", "2015-04-01", "2015-05-01", "2015-06-01", "2015-07-01", "2015-08-01", "2015-09-01", "2015-10-01", "2015-11-01", "2015-12-01"))
        , value = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
    ) %>%
    arrange(
        desc(date)
    ) %>%
    mutate(
        value_rollmean = rollmean(value, k = 2, fill = NA)
    ) %>%
    arrange(
        date
    )

temp
© www.soinside.com 2019 - 2024. All rights reserved.