停车利用率 - R.

时间:2017-12-03 20:40:57

标签: r date

我有停车位的进入和退出时间。如何在特定时间找出停车位的使用情况?

以下是我的数据示例: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

谢谢!

2 个答案:

答案 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)