首页 > 解决方案 > 由于时区/夏令时更改,将时间序列中的空白填补了一个小时

问题描述

我有一个包含汇总数据的时间序列(不同的时间间隔,例如 1 天、12 小时和 30 分钟)。数据如下所示:

           open    close     high      low
2013-01-21 16.62600 17.13600 17.13600 16.62600
2013-01-22 17.21240 17.74800 17.85000 17.18699
2013-01-23 17.40467 17.93721 17.93721 17.21760
2013-01-24 18.00399 17.23800 19.53516 16.52400
2013-01-25 16.99912 17.74800 18.14193 15.88218

对于某些间隔,数据丢失了,我想填补这些空白。为了做到这一点,我根据从头到尾的顺序将数据与动物园对象合并。

data.full = merge(data,zoo(,seq(start(data),end(data),by=interval)), all=TRUE)

不幸的是,这个顺序似乎是基于 24 小时而不是天。因此,一旦夏令时开始,创建的序列就会关闭一小时,并且合并不再起作用(并且时区显然从 CET 变为 CEST)。

动物园序列如下所示:

2013-03-28 00:00:00 CET
2013-03-29 00:00:00 CET
2013-03-30 00:00:00 CET
2013-03-31 00:00:00 CET
2013-04-01 01:00:00 CEST
2013-04-02 01:00:00 CEST
2013-04-03 01:00:00 CEST
2013-04-04 01:00:00 CEST
2013-04-05 01:00:00 CEST

摆脱这个问题的最简单(也是最灵活的方法)是什么?我可以手动更改 zoo 对象中的格式,但我想将代码用于不同的时间间隔。

标签: rtime-seriesdstzoo

解决方案


推荐阅读