我有以下形式的数据:
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的索引)?我还需要进行时间序列分析,例如预测,平滑,拟合模型等。
出于这些目的处理此类数据的推荐方法是什么?
答案 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轴。