r - R:滚动应用,保留日期列
问题描述
我有一个包含日期列的数据集,其他列是每日索引返回。我想收到所有指数的滚动标准偏差,但保留日期以绘制结果。数据如下:
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 函数时,日期会消失并返回 NA
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 列中显示相应的日期。
解决方案
这里真正的问题是使用数据框来表示时间序列。如果您使用时间序列表示,那么整个问题就会消失。
mydata_z <- read.zoo(mydata)
r <- rollapplyr(mydata_z, 30, sd, na.rm = TRUE, fill = NA)
现在您可以使用plot.zoo
,xyplot.zoo
或autoplot.zoo
分别使用经典图形、格子图形或 ggplot2 图形来绘制r
图形,或者如果您需要数据框则fortify.zoo(r)
。
推荐阅读
- database - 弱实体的属性
- javascript - 如何使用 face-api 获取视频内的人脸位置检测?
- java - 在 REST API 上关闭 FileHandler 的最佳方法
- angular - 使用 [ngClass]="fontSize" 以角度增加字体大小
- c# - 如何在 WPF 中以编程方式添加或删除 DisplayAttribute
- reactjs - 在 final-form-focus 中改变焦点元素的顺序
- c# - 有没有办法在 WPF 中的这个自定义 TreeView 中选择项目?
- asp.net-core - 还原 Nuget 包时出错
- pug - 如何在 pug/jade 中增加输入文本框的高度和宽度
- python - Python SQLite3 executemany:模拟set(data)的查询 - set(initial_data)