我正在处理 SAS 9.3 中的高频财务数据,时间戳(数字,format=time12.3
)以毫秒为单位,例如:
[h]:mm:ss:000.
之前的代码使用了一个PROC SQL
我在各种论坛上看到过几次的结构,你在这个问题上
- 对(否则不必要的)ID 变量执行 FULL JOIN 并计算每个数据集上的时间戳之间的差异,然后
- 仅通过分组 ID 保留时间差 = MIN(时间差)的那些记录(否则这是必要的)。
这还包括任何一个约束
"take the exact match or pull the next closest earlier record"
或者
"take the exact match or pull the next farther record"
按组 ID(数字、顺序)。问题是这很慢,数据很大(数百万条记录),我们需要对大约 12 个不同的时间戳执行此操作。
如果有人能指导我以更快的方式做到这一点,我将不胜感激!
示例数据(用于连接A=B
或A < B
最接近的连接:
ObsID TimeFromDataA TimeFromDataB
1 5:21:18:157 5:22:03:291
2 11:04:09:222 11:04:09:223
... 等等 ...