我有停车位的进入和退出时间。如何在特定时间找出停车位的使用情况?
以下是我的数据示例:sID是停车位号,实际车辆的进入和退出时间。 pID是用户ID
QFileSystemModel
理想情况下,这将是我的输出,包括在不同停车日期每小时(或30分钟)使用停车场。 'No.parksUtilized'是在特定时间使用的停车位数。下表不是真实数据,仅用于说明目的
p_id sID entrytime exittime
40114 25 2013-11-18 15:49:27 2013-11-19 05:00:00
39173 58 2013-11-18 14:34:22 2013-11-19 05:00:00
12549 07 2013-11-18 13:55:13 2013-11-19 05:00:00
39475 48 2013-11-18 13:31:14 2013-11-19 05:00:00
12549 70 2013-11-18 10:35:56 2013-11-19 05:00:00
39173 99 2013-11-18 10:15:52 2013-11-19 05:00:00
12549 99 2013-11-18 10:02:06 2013-11-19 05:00:00
39909 76 2013-11-18 08:04:38 2013-11-19 05:00:00
39038 01 2013-11-15 15:47:13 2013-11-16 04:00:00
39807 91 2013-11-15 14:30:19 2013-11-16 02:30:19
40629 31 2013-11-19 08:13:42 2013-11-19 20:13:42
谢谢!
答案 0 :(得分:0)
看起来您的输出可能基于的数据多于您在数据样本中显示的数据。以下是如何继续的示例。
首先,以可用的形式设置样本数据:
library(tidyverse)
library(lubridate)
dat = read.table(text="
40114 25 2013-11-18 15:49:27 2013-11-19 05:00:00
39173 58 2013-11-18 14:34:22 2013-11-19 05:00:00
12549 07 2013-11-18 13:55:13 2013-11-19 05:00:00
39475 48 2013-11-18 13:31:14 2013-11-19 05:00:00
12549 70 2013-11-18 10:35:56 2013-11-19 05:00:00
39173 99 2013-11-18 10:15:52 2013-11-19 05:00:00
12549 99 2013-11-18 10:02:06 2013-11-19 05:00:00
39909 76 2013-11-18 08:04:38 2013-11-19 05:00:00
39038 01 2013-11-15 15:47:13 2013-11-16 04:00:00
39807 91 2013-11-15 14:30:19 2013-11-16 02:30:19
40629 31 2013-11-19 08:13:42 2013-11-19 20:13:42", header=FALSE, stringsAsFactors=FALSE)
names(dat) = c("p_id", "sID", "entrytime", "v1", "exittime", "v2")
dat = dat %>%
mutate(entrytime = ymd_hms(paste(entrytime, v1)),
exittime = ymd_hms(paste(exittime, v2))) %>%
select(-v1, -v2)
计算占用空间:
times = seq(ymd_hms("2013-11-18 08:00:00"), ymd_hms("2013-11-18 18:00:00"), by="1 hour")
map_df(times, function(x) {
data.frame(timecheck=x,
Num_Occupied=sum(with(dat, between(x, entrytime, exittime))))
})
timecheck Num_Occupied 1 2013-11-18 08:00:00 0 2 2013-11-18 09:00:00 1 3 2013-11-18 10:00:00 1 4 2013-11-18 11:00:00 4 5 2013-11-18 12:00:00 4 6 2013-11-18 13:00:00 4 7 2013-11-18 14:00:00 6 8 2013-11-18 15:00:00 7 9 2013-11-18 16:00:00 8 10 2013-11-18 17:00:00 8 11 2013-11-18 18:00:00 8
答案 1 :(得分:0)
我认为你只是向我们展示了你的数据的一部分而且我并不完全理解你的决赛桌,但你可以把它作为你的问题的提示来处理。我会用包lubridate
来解决它。
package(lubridate)
df$entrytime <- ymd_hms(df$entrytime)
df$exittime <- ymd_hms(df$exittime)
interval <- interval(start = df$entrytime, end = df$exittime)
date <- ymd_hms("2013-11-15 15:00:00")
length(date %within% interval)