我今天在編程方面不是很有經驗,但在過去很遠的地方做了一些工作。lubridate - 計算每個間隔的重疊間隔
我們支持共享車,每輛車都有預約開始日期時間和結束日期時間。每個預訂的start-dt和end-dt全部爲00或30分鐘,持續時間> = 30分鐘。
現在我們有很多車在同一個地方,我想看看有多少輛車在重疊時間進行預訂。
爲此,我在兩次之間建立一個時間間隔爲30分鐘的時間序列。
library(dplyr)
TimeSlot =
tibble(seq(
from = as.POSIXlt("2013-07-01"),
to = as.POSIXlt("2013-12-01"),
1800))
TimeSlot <- cbind(TimeSlot, c(0L))
colnames(TimeSlot) <- c("Slot", "count")
TimeSlot$count <- as.integer(TimeSlot$count)
然後,對於每個時間段,我會計算與該時間段重疊的預訂。此代碼的工作原理:
for(j in 1:length(TimeSlot$count))
{
for (i in 1:length(bookings$start)) {
if ((TimeSlot[j, "Slot"] >= bookings[i, "start"]) &&
(TimeSlot[j, "Slot"] < bookings[i, "end"])) {
TimeSlot[j, "count"] = TimeSlot[j, "count"] + 1
# rk_j = j
}
}
}
我得到一個結果。
這需要一段時間,我認爲,這不是很像r。現在,在我開始優化這些代碼之前,如果有類似r的方式來解決我的問題,我會問更多有經驗的人的社區。
問候 Ruediger
我該怎麼做? –
你可以檢查答案左邊的綠色箭頭,謝謝! – PoGibas