将包含每小时时间序列的数据帧转换为r中的ts对象

时间:2019-03-22 13:00:28

标签: r datetime time-series

我有以下形式的数据:

   Date                PJMW_MW
1  2002-04-01 01:00:00 4374
2  2002-04-01 02:00:00 4306
3  2002-04-01 03:00:00 4322
4  2002-04-01 04:00:00 4359
5  2002-04-01 05:00:00 4436
6  2002-04-01 06:00:00 4723
7  2002-04-01 07:00:00 5180
8  2002-04-01 08:00:00 5482
9  2002-04-01 09:00:00 5616
10 2002-04-01 10:00:00 5722
...
143206 2018-08-03 00:00:00 5489

数据属于以下类型:

> class(dat)
[1] "data.frame"
> class(dat$Date)
[1] "POSIXct" "POSIXt" 
> class(dat$PJMW_MW)
[1] "numeric"
> typeof(dat$PJMW_MW)
[1] "double"

如何将其转换为时间序列对象,以便在绘制数据时x轴是实际日期(而不是从1到143206的索引)?我还需要进行时间序列分析,例如预测,平滑,拟合模型等。

出于这些目的处理此类数据的推荐方法是什么?

1 个答案:

答案 0 :(得分:2)

对于基数R,您可以使用函数ts(),在其中您可以指定系列的值以及观察值的开始和结束时间,但是似乎不适合使用小时。

因此,您可以使用功能zoo()(来自库 zoo ):

library(zoo)

hourly_ts <- zoo(
  x         = dat$PJMW_MW,
  order.by  = dat$Date,
  frequency = 24
)

然后,如果您plot(hourly_ts)(或使用 ggplot ),它将具有正确的x轴。