Wie die unten (einfach mit sqldf) zu tun data.table und bekommen genau das gleiche Ergebnis mit:Wie führt man Join-Over-Datumsbereiche mit data.table aus?
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")
Löst dies Ihr Problem? http://stackoverflow.com/questions/5123197/matching-time-a-time-in-the-interval-between-a-start-and-end-time –
@DavidRobinson Thanks. Ich habe diese Frage und Antwort tatsächlich gesehen, aber leider ist mein Datenvolumen riesig und würde wirklich eine schnelle data.table Lösung bevorzugen ... – Samo
Ich weiß, dass das ein bisschen unerforscht ist, aber bin ich der einzige, der Dec-31-1969 erhält Termine? Sollte es nicht Jan-1-1970 sein? –