Làm thế nào để thực hiện dưới đây (đơn giản sử dụng sqldf) sử dụng data.table và nhận được chính xác cùng một kết quả:Cách thực hiện tham gia qua các phạm vi ngày bằng cách sử dụng data.table?
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")
Điều này có giải quyết được sự cố của bạn không? http://stackoverflow.com/questions/5123197/matching-time-a-time-in-the-interval-between-a-start-and-end-time –
@DavidRobinson Cảm ơn. Tôi đã thực sự nhìn thấy câu hỏi này và câu trả lời, nhưng tiếc là khối lượng dữ liệu của tôi là rất lớn và thực sự muốn có một giải pháp data.table nhanh ... – Samo
Tôi biết điều này là một chút không thực tế, nhưng tôi là người duy nhất nhận được Dec-31-1969 ngày? Nếu nó không phải là jan-1-1970? –