我有两个不均匀间隔的时间序列,每个时间序列都测量同一系统的不同属性 . 两个系列的数据点不会同时采样,并且系列的长度不同 . 我想将系列A中的每一行与最接近它的B行匹配 . 我想到的是向A添加一列,其中包含B中最近行的索引 . 两个系列都有一个在Unix时间内测量的时间列(例如,1459719755) .
例如,给定两个数据集
a time
2 1459719755
4 1459719772
3 1459719773
b time
45 1459719756
2 1459719763
13 1459719766
22 1459719774
第一个数据集应更新为
a time index
2 1459719755 1
4 1459719772 4
3 1459719773 4
由于 B[1,]$time
具有与 A[1,]$time
最接近的值,因此 B[4,]$time
具有与 A[2,]$time
和 A[3,]$time
最接近的值 .
有没有方便的方法呢?
1 回答
尝试这样的事情:
为什么要这样做? ecdf函数返回另一个值为0到1的函数 . 它返回由
ecdf
的第一个参数定义的值分布中新值的"probability range" [0,1]中的"position" . 表达式实际上只是重新调整了这个函数's result to the range [1, nrow(bdat)]. (I think it' s翻转优雅 . )另一种方法是在
bdat$time
的排序值上使用approxfun
,然后让你得到插值 . 这些可能需要四舍五入 . 将它们用作索引将改为截断为整数 .在这两种情况下,您都要从“订单统计”中预测排序值 . 在第二种情况下,您应该检查是否以您希望的方式处理关系 .