【发布时间】:2015-02-13 18:42:28
【问题描述】:
如何使用 data.table 执行以下操作(直接使用 sqldf)并获得完全相同的结果:
library(data.table)
whatWasMeasured <- data.table(start=as.POSIXct(seq(1, 1000, 100),
origin="1970-01-01 00:00:00"),
end=as.POSIXct(seq(10, 1000, 100), origin="1970-01-01 00:00:00"),
x=1:10,
y=letters[1:10])
measurments <- data.table(time=as.POSIXct(seq(1, 2000, 1),
origin="1970-01-01 00:00:00"),
temp=runif(2000, 10, 100))
## Alternative short names for data.tables
dt1 <- whatWasMeasured
dt2 <- measurments
## Straightforward with sqldf
library(sqldf)
sqldf("select * from measurments m, whatWasMeasured wwm
where m.time between wwm.start and wwm.end")
【问题讨论】:
-
这能解决您的问题吗? stackoverflow.com/questions/5123197/…
-
@DavidRobinson 谢谢。这个问题我其实已经看过了,可惜我的数据量很大,真的更喜欢快速的data.table解决方案……
-
我知道这有点不真实,但我是唯一一个得到 1969 年 12 月 31 日约会的人吗?不应该是 1970 年 1 月 1 日吗?
-
@SerbanTanasa 时区问题我猜...
标签: r time-series data.table