如何在R中修改时间序列(XTS或ZOO)?

9

我是新来的stackoverflow用户,对R也比较陌生,经过长时间的搜索,我仍然找不到以下问题的答案。

我有许多温度与时间序列相关的数据文件。我将CSV文件作为ZOO对象导入,然后转换为XTS。正确的文件看起来像这样,在整点和半点进行读数:

>head(master1)
                       S_1
2010-03-03 00:00:00 2.8520
2010-03-03 00:30:00 2.6945
2010-03-03 01:00:00 2.5685
2010-03-03 01:30:00 2.3800
2010-03-03 02:00:00 2.2225
2010-03-03 02:30:00 2.0650

但是有些时间值略微偏差 - 例如 23:59:00 而不是 00:00:00,或者是 00:29:00 而不是 00:30:00。

>head(master21)
                       S_21
2010-03-04 23:59:00  -0.593
2010-03-05 00:29:00  -0.908
2010-03-05 00:59:00  -1.034
2010-03-05 01:29:00  -1.223
2010-03-05 01:59:00  -1.349
2010-03-05 02:29:00  -1.538

我想纠正这些时间序列,因为分钟差异对我的分析不重要,而且我最终想合并这些文件,所以每个时间序列需要具有相同的时间。
我希望有一个命令可以只是说“将时间序列向前移动1分钟,但不改变数据列(例如S_21)。 我在更容易的更改上使用了gsub(),并考虑使用复杂的正则表达式来更改数据,然后将其转换为ZOO或XTS。 我已经阅读了关于lag()和diff()的文章,但它们似乎是相对于时间序列移动数据值; 如果我错了,请纠正我。
非常感谢任何帮助解决这个问题的人。
1个回答

11

请尝试

index(master21) <- index(master21) + 60    # adds a minute

这将会在时间索引中增加一分钟。然后你可以使用merge()函数,因为时间戳已经对齐。

更一般而言,zoo包的文献资料也会对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接