在数据帧上进行间隔搜索

时间:2012-07-29 00:37:37

标签: r

我有一个时间序列和值的数据框。时间序列是纪元的秒数​​。以下是该数据框中前几个元素的外观

val = seq(1,19)
ts = seq(1342980888,1342982000,by=60)
x = data.frame(ts = ts,val = val)
head(x)

      ts val
1 1342980888   1
2 1342980948   2
3 1342981008   3
4 1342981068   4
5 1342981128   5
6 1342981188   6

我想要某种间隔搜索功能,它接收时间戳1342980889(第一行中的ts为+1)作为输入,它应该返回1,2(行号)作为输出。基本上,我想找到两行的时间戳,它们包含输入时间标记1342980889.虽然使用“which”相对容易,但我怀疑“哪个”进行矢量扫描,而真正的数据帧是相当的我希望使用二进制搜索来做到这一点。非常感谢提前

1 个答案:

答案 0 :(得分:5)

您应该使用findInterval功能。它将为您提供x$ts立即小于您要查找的值的行的索引(您只需添加一个以获取另一个索引)

findInterval(1342980889, x$ts)
# [1] 1

另请注意,该函数是矢量化的,即第一个参数可以是要查找的值的向量:

findInterval(c(1342980889, 1342981483), x$ts)
# [1]  1 10