首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >停车使用情况-R

停车使用情况-R
EN

Stack Overflow用户
提问于 2017-12-03 20:40:56
回答 2查看 98关注 0票数 0

我有停车位的进出时间。如何在给定的时间内找到停车位的利用情况?

这里是我的数据示例: sID是实际车辆的停车位号、进出时间。pID是用户ID

代码语言:javascript
运行
复制
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

理想情况下,这将是我的输出,这将包括每小时(或30分钟)利用停车场跨越不同的停车日期。“No.parksUtilized”是指在特定时间使用的停车位数量。下表不是真实的数据,只是为了说明而已。

代码语言:javascript
运行
复制
        time           No.parksUtilized
2013-11-15 08:00:00         13
2013-11-15 09:00:00          5
2013-11-15 10:00:00          9

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-03 21:17:56

看起来,您的输出可能是基于比您在数据示例中显示的更多的数据。下面是一个如何进行的例子。

首先,以可用的形式设置示例数据:

代码语言:javascript
运行
复制
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)

清点占用的空间:

代码语言:javascript
运行
复制
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

票数 0
EN

Stack Overflow用户

发布于 2017-12-03 21:18:03

我认为您刚刚向我们展示了您的部分数据,我并不完全理解您的最后一个表,但您可以将此作为问题的提示来处理。我会用包lubridate来解决它。

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47623065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档