我正在尝试按 2 个 data.tables 中的组对数据进行子集/匹配,但无法弄清楚这在 R 中是如何实现的。
我有以下 data.table,其中包含 City_ID 和时间戳(列名称=时间)。
Library(data.table)
timetable <- data.table(City_ID=c("12","9"),
Time=c("12-29-2013-22:05:03","12-29-2013-11:59:00"))
我有第二个 data.table,其中包含对城市和时间戳的一些观察(以及附加数据)。该表如下所示:
DT = data.table(City_ID =c("12","12","12","9","9","9"),
Time= c("12-29-2013-13:05:13","12-29-2013-22:05:03",
"12-28-2013-13:05:13","12-29-2013-11:59:00",
"01-30-2013-10:05:03","12-28-2013-13:05:13"),
Other=1:6)
现在我需要找到 DT 中每个城市在另一个 data.table“时间表”(基本上是匹配表)中时间 >= 时间的观察结果。仅应保留那些记录(包括不用于计算的列;在示例中为“其他”列)。我想要的结果是这样的:
desiredresult = data.table(City_ID=c("12","9"),
Time= c("12-29-2013-22:05:03","12-29-2013-11:59:00"),
Other=c("2","4"))
我已经尝试过以下方法:
setkey(DT, City_ID, Time)
setkey(timetable, City_ID)
failedresult = DT[,Time >= timetable[Time], by=City_ID]
failedresult2 = DT[,Time >= timetable, by=City_ID]
顺便说一句:我知道另外分割日期和时间可能会更好,但这可能会使示例变得更加复杂(当我测试通过 data.table 找到时间戳中的最小值时,它似乎有效)。