如何使用不等间距的观察值在Julia`TimeArray`对象内以等间隔时间戳回填

时间:2017-05-05 08:08:56

标签: julia

给定一个具有不等间距观测值的TimeArray变量,我想插入"缺失"时间戳之间没有观察的时间戳。由于在这些新时间戳上没有观察结果,我想用最新的可用数据点(回填)替换它们。我怎样才能在朱莉娅实现这一目标?谢谢你的任何指示!

我的TimeSeries.TimeArray变量如下所示:

                      price
2011-08-14T14:14:00 | 10.4
2011-08-14T14:15:00 | 10.4
2011-08-14T14:21:00 | 10.5

现在我想要生成的是

                      price
2011-08-14T14:14:00 | 10.4
2011-08-14T14:15:00 | 10.4
2011-08-14T14:16:00 | 10.4 (back-filled)
2011-08-14T14:17:00 | 10.4 (back-filled)
2011-08-14T14:18:00 | 10.4 (back-filled)
2011-08-14T14:19:00 | 10.4 (back-filled)
2011-08-14T14:20:00 | 10.4 (back-filled)
2011-08-14T14:21:00 | 10.5

1 个答案:

答案 0 :(得分:0)

据我所知,TimeArray尚未提供此功能,但我怀疑它会在某些时候出现。

从本质上讲,你真正想要的归结为以下一般问题:给定一个排序的,唯一的向量x,以及一个有序的,唯一的,引用向量m,对于每个元素{{1找到m[i]中最后一个观察点的索引j,使x

有两种方法可以做到这一点:

1)如果x[j] <= m[i]相对于m较小,则最快的方法可能只是在x上为每个元素调用基础Julia函数searchsortedlastx,即您将对该函数进行m次调用。

2)如果length(m)相对于m较大,那么循环xm并利用排序顺序可能会更快需要单循环来查找所有相关索引。与此类型的许多问题一样,向后执行此操作通常更容易,即从xx结束开始并重新开始工作。以下函数执行此操作,但假设两个输入都已排序且唯一:

m

对于TimeArray案例,你应该能够用一些铃声和口哨包装它。