【问题标题】:How to create column for dates in forecast output [duplicate]如何在预测输出中为日期创建列[重复]
【发布时间】:2018-02-26 10:58:26
【问题描述】:

我正在尝试从具有可读日期的预测中获取输出。 日期现在没有列,并且是 year.decimal 格式。

我的输出如下所示:

       Point Forecast    Lo 80     Hi 80    Lo 95     Hi 95
2017.154             33 24.42807  41.57193 19.89037  46.10963
2017.173             31 22.42807  39.57193 17.89037  44.10963
2017.192             32 23.42807  40.57193 18.89037  45.10963
2017.212             30 21.42807  38.57193 16.89037  43.10963
2017.231             39 30.42807  47.57193 25.89037  52.10963

我希望它看起来像这样:

Dates     Point Forecast  Lo 80     Hi 80    Lo 95      Hi 95
2017-02-26           33 24.42807  41.57193 19.89037  46.10963
2017-03-05           31 22.42807  39.57193 17.89037  44.10963
2017-03-12           32 23.42807  40.57193 18.89037  45.10963
2017-03-19           30 21.42807  38.57193 16.89037  43.10963
2017-03-26           39 30.42807  47.57193 25.89037  52.10963

我怎样才能获得连续的日期,以便我可以将日期小数更改为正常日期?

【问题讨论】:

    标签: r date forecasting


    【解决方案1】:

    试试这个,使用lubridate 包:

    library(lubridate)
     date<-format(date_decimal(as.numeric(row.names(as.data.frame(forecasting_output)))),"%Y-%m-%d")
    
    date
        [1] "2017-08-23" "2017-08-25" "2017-08-25"
    

    之后,就可以轻松绑定这两个信息了:

    cbind(date,as.data.frame(forecasting_output))
                    date Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
    2017.6438 2017-08-23       722.5832 405.3363 1039.830 237.3959 1207.770
    2017.6466 2017-08-25       953.0771 635.8292 1270.325 467.8884 1438.266
    2017.6493 2017-08-25      1063.1212 745.8714 1380.371 577.9295 1548.313
    

    【讨论】:

    【解决方案2】:

    似乎2017.154 的值对应于年份2017 加上年份的一部分0.154。我们可以尝试使用以下公式将Dates 列转换为实际日期:

    df$NewDates <- as.Date(paste0(floor(df$Dates), "-01-01")) +
        365.25*(df$Dates - floor(df$Dates))
    
    [1] "2017-02-26" "2017-03-05" "2017-03-12" "2017-03-19" "2017-03-26"
    

    Demo

    注意:我可能错过了处理闰年的边缘情况。对于闰年,一年有 366 天,而不是 365 天。因此,您可能需要在我上面写的内容中添加检测到这一点的逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 2017-02-02
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 2021-01-01
      • 2022-01-15
      相关资源
      最近更新 更多