使用二进制搜索

时间:2015-11-05 11:00:59

标签: r data.table

我有一个包含start_dateend_date的数据表。现在我们在2010-01-05,我想过滤这个表,这样,我只返回包含我的日期的行。我知道这可以通过矢量扫描轻松完成:

library(data.table)
dt <- data.table(start_date=20100101:20100120, end_date=20100105:20100124, value= 1:20)
dt[start_date <= 20100105 & end_date >20100105, ]

这会产生:

dt[start_date <= 20100105 & end_date >20100105, ]
   start_date end_date value
1:   20100102 20100106     2
2:   20100103 20100107     3
3:   20100104 20100108     4
4:   20100105 20100109     5

然而,对于非常大的表(20-50百万行),这将是低效的。我知道如果表是键控的,我可以通过编写dt[.(20100102, 20100106), ]来使用data.table的二进制搜索工具来选择某个日期。但是我如何利用二进制搜索,以便我可以扫描上述练习中的范围。

0 个答案:

没有答案