【问题标题】:R: Rollapply, preserve Date columnR:滚动应用,保留日期列
【发布时间】:2018-11-19 05:04:37
【问题描述】:

我有一个数据集,其中包含一个日期列,其他列是每日索引回报。我想收到所有指数的滚动标准偏差,但保留日期以绘制结果。数据如下:

head(mydata)

        Date      GL1 GL2       US CN       JP       DE       UK
1 1990-01-03  0.02460  NA -0.25889 NA       NA  3.00128  1.20872
2 1990-01-04  0.33681  NA -0.86503 NA       NA -1.82327 -0.49234
3 1990-01-05 -0.81943  NA -0.98041 NA -1.13817 -0.86874 -0.29003
4 1990-01-06       NA  NA       NA NA       NA       NA       NA
5 1990-01-07       NA  NA       NA NA       NA       NA       NA

当使用 rollapply 函数时,日期会消失并返回 NAs

require(zoo)

Rolling = as.data.frame(rollapply(mydata,30,sd,na.rm=TRUE,align="right"))

head(Rolling)
 Date       GL1 GL2       US CN        JP       DE        UK
1   NA 0.5527451  NA 1.033204 NA 0.9021960 1.486567 0.8421562
2   NA 0.5675608  NA 1.057156 NA 0.9318496 1.467637 0.7954081
3   NA 0.5681388  NA 1.077253 NA 0.9318496 1.438117 0.8123918
4   NA 0.5663124  NA 1.095049 NA 0.9264034 1.454327 0.8331727
5   NA 0.5623544  NA 1.075118 NA 0.9017324 1.443547 0.8123613
6   NA 0.5523878  NA 1.052310 NA 0.8797660 1.411220 0.8197624

我将日期保留为 as.Date 格式,但不知道如何继续在 Date 列中显示相应的日期。

【问题讨论】:

    标签: r as.date rollapply


    【解决方案1】:

    这里真正的问题是使用数据框来表示时间序列。如果您使用时间序列表示,那么整个问题就会消失。

    mydata_z <- read.zoo(mydata)
    r <- rollapplyr(mydata_z, 30, sd, na.rm = TRUE, fill = NA)
    

    现在您可以使用plot.zooxyplot.zooautoplot.zoo 分别使用经典图形、晶格图形或ggplot2 图形绘制r,或者如果您需要数据框则使用fortify.zoo(r)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2020-10-15
      • 2015-05-31
      相关资源
      最近更新 更多