给定一个具有不等间距观测值的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
答案 0 :(得分:0)
据我所知,TimeArray
尚未提供此功能,但我怀疑它会在某些时候出现。
从本质上讲,你真正想要的归结为以下一般问题:给定一个排序的,唯一的向量x
,以及一个有序的,唯一的,引用向量m
,对于每个元素{{1找到m[i]
中最后一个观察点的索引j
,使x
。
有两种方法可以做到这一点:
1)如果x[j] <= m[i]
相对于m
较小,则最快的方法可能只是在x
上为每个元素调用基础Julia函数searchsortedlast
。 x
,即您将对该函数进行m
次调用。
2)如果length(m)
相对于m
较大,那么循环x
和m
并利用排序顺序可能会更快需要单循环来查找所有相关索引。与此类型的许多问题一样,向后执行此操作通常更容易,即从x
和x
结束开始并重新开始工作。以下函数执行此操作,但假设两个输入都已排序且唯一:
m
对于TimeArray案例,你应该能够用一些铃声和口哨包装它。