【发布时间】:2017-05-06 14:00:18
【问题描述】:
我有几个时间间隔记录如下:
In Out tag
2008-12-18 2008-12-19 1
2008-12-22 2008-12-23 1
2008-12-29 2009-01-02 1
2009-01-05 2009-01-05 1
2009-01-13 2009-01-13 1
2009-01-14 2009-01-14 1
2009-01-19 2009-01-19 1
我想填写缺失的间隔,使其看起来像这样:
In Out tag
2008-12-18 2008-12-19 1
2008-12-20 2008-12-21 0
2008-12-22 2008-12-23 1
2008-12-24 2008-12-28 0
2008-12-29 2009-01-02 1
2009-01-03 2008-01-04 0
2009-01-05 2009-01-05 1
...
我知道我可以使用zoo 来填写时间序列中缺失的日期。此外,我还可以使用 lubridate 包中的 interval(start, end) 创建间隔。我最初的想法是,我可以以某种方式将其结合起来以填补缺失的间隔。
我也一直在考虑是否有任何“蛮力”方法可以用来填补间隔。例如,将在上一行中获取最后一项 Out 并从下一行中获取 In 的函数,但没有设法找到任何解决方案。
理想情况下,我想知道是否有任何巧妙的方法可以使用zoo、lubridate、xts 或 R 中的其他工具来做到这一点?
【问题讨论】:
-
“In”和“Out”的天数差异没有遵循任何模式或有任何模式?例如,在第四行,In 和 Out 都在 '2009-01-05' 中。那么,我们如何知道下一个起点是什么以及“In”和“Out”的差异是一天还是同一天?
-
第二个 df 的第 4 行是 24 - 28。为什么不是 24-25、26-27...?
-
缺少的间隔没有模式。
-
我不想将时间间隔分成一天的时间间隔(例如,24-28 到 24-25、26-27 等)。这将不必要地扩展数据集,并且不切实际分析。
标签: r time-series xts zoo lubridate