Sas 按分钟计数观测

Sas 按分钟计数观测,sas,r,dplyr,tidyverse,plyr,Sas,R,Dplyr,Tidyverse,Plyr,我试图数一数一天中每分钟路上有多少辆车。我的日期范围是整个月,我的数据包括每辆车的开始时间和结束时间 我将绘制一天中交通量最大的时段,即09:42时道路上有19辆车,而11:21时道路上有11辆车 使用dplyr可能有一种方法可以做到这一点,但我不熟悉该软件包。此程序当前正在运行,但需要重新写入 我当前的解决方法是对循环使用一系列嵌套的。唯一的问题是这些循环需要将近一个小时的计算时间,因为有超过86000行的数据 我有POSIX变量,其开始和结束时间如下: StartTime

我试图数一数一天中每分钟路上有多少辆车。我的日期范围是整个月,我的数据包括每辆车的开始时间和结束时间

我将绘制一天中交通量最大的时段,即09:42时道路上有19辆车,而11:21时道路上有11辆车

使用
dplyr
可能有一种方法可以做到这一点,但我不熟悉该软件包。此程序当前正在运行,但需要重新写入

我当前的解决方法是对循环使用一系列嵌套的
。唯一的问题是这些循环需要将近一个小时的计算时间,因为有超过86000行的数据

我有
POSIX
变量,其开始和结束时间如下:

    StartTime           EndTime             TypeOfCar
1   2019-07-01 12:00:00 2019-07-01 18:14:00 32S
2   2019-07-01 15:00:00 2019-07-01 20:47:00 32S
3   2019-07-01 16:29:00 2019-07-01 22:24:00 32S
4   2019-07-01 18:00:00 2019-07-01 23:46:00 32S
5   2019-07-01 13:12:00 2019-07-01 14:57:00 32S
6   2019-07-02 04:30:00 2019-07-02 10:05:00 32S
7   2019-07-01 20:10:00 2019-07-01 22:32:00 737
8   2019-07-02 06:40:00 2019-07-02 12:05:00 32S
9   2019-07-02 02:10:00 2019-07-02 07:43:00 32S
我正在寻找类似以下内容的输出:

12:01AM - 5 cars
12:02AM - 5 cars
12:03AM - 4 cars
...
...
...
09:42AM - 16 cars
...
11:48AM - 21 cars
...
...
5:12PM - 32 cars
...
10:59PM - 0 cars
11:00PM - 0 cars
一个重要的注意事项是,我希望一天中的时间也没有任何流量。总的来说,我想看看一天中所有1440分钟的计数。目标是生成类似于以下内容的图形:

库(dplyr)
图书馆(tidyr)
图书馆(lubridate)
df1%>%
行%>%
转换(时间间隔=列表(顺序位置)日期(起始时间,单位=“分钟”),
上限日期(结束时间,单位=“分钟”),
by=“min”))%%>%
最新%>%
分组依据(间隔)%>%
计数
#A tible:1303x2
#>#组:间隔[1303]
#>间隔
#>                  
#>  1 2019-07-01 12:00:00     1
#>  2 2019-07-01 12:01:00     1
#>  3 2019-07-01 12:02:00     1
#>  4 2019-07-01 12:03:00     1
#>  5 2019-07-01 12:04:00     1
#>  6 2019-07-01 12:05:00     1
#>  7 2019-07-01 12:06:00     1
#>  8 2019-07-01 12:07:00     1
#>  9 2019-07-01 12:08:00     1
#> 10 2019-07-01 12:09:00     1
#> # ... 还有1293行
数据:

read.table(text=“StartTime EndTime TypeOfCar
2019-07-01_12:00:00 2019-07-01_18:14:00 32秒
2019-07-01_15:00:00 2019-07-01_20:47:00 32秒
3 2019-07-01_16:29:00 2019-07-01_22:24:00 32秒
4 2019-07-01_18:00:00 2019-07-01_23:46:00 32秒
5 2019-07-01_13:12:00 2019-07-01_14:57:00 32秒
6 2019-07-02_04:30:00 2019-07-02_10:05:00 32秒
7   2019-07-01_20:10:00 2019-07-01_22:32:00 737
8 2019-07-02_06:40:00 2019-07-02_12:05:00 32秒
9 2019-07-02_02:10:00 2019-07-02_07:43:00 32S“,
标题=T,
stringsAsFactors=F)->df1
df1$StartTime
库(dplyr)
图书馆(tidyr)
图书馆(lubridate)
df1%>%
行%>%
转换(时间间隔=列表(顺序位置)日期(起始时间,单位=“分钟”),
上限日期(结束时间,单位=“分钟”),
by=“min”))%%>%
最新%>%
分组依据(间隔)%>%
计数
#A tible:1303x2
#>#组:间隔[1303]
#>间隔
#>                  
#>  1 2019-07-01 12:00:00     1
#>  2 2019-07-01 12:01:00     1
#>  3 2019-07-01 12:02:00     1
#>  4 2019-07-01 12:03:00     1
#>  5 2019-07-01 12:04:00     1
#>  6 2019-07-01 12:05:00     1
#>  7 2019-07-01 12:06:00     1
#>  8 2019-07-01 12:07:00     1
#>  9 2019-07-01 12:08:00     1
#> 10 2019-07-01 12:09:00     1
#> # ... 还有1293行
数据:

read.table(text=“StartTime EndTime TypeOfCar
2019-07-01_12:00:00 2019-07-01_18:14:00 32秒
2019-07-01_15:00:00 2019-07-01_20:47:00 32秒
3 2019-07-01_16:29:00 2019-07-01_22:24:00 32秒
4 2019-07-01_18:00:00 2019-07-01_23:46:00 32秒
5 2019-07-01_13:12:00 2019-07-01_14:57:00 32秒
6 2019-07-02_04:30:00 2019-07-02_10:05:00 32秒
7   2019-07-01_20:10:00 2019-07-01_22:32:00 737
8 2019-07-02_06:40:00 2019-07-02_12:05:00 32秒
9 2019-07-02_02:10:00 2019-07-02_07:43:00 32S“,
标题=T,
stringsAsFactors=F)->df1

df1$StartTime我们可以在每个
StartTime
EndTime
count
之间创建一个持续时间为1分钟的序列,计算每分钟发生的次数

library(dplyr)
library(tidyr)

df %>%
  unnest(time = purrr::map2(StartTime, EndTime, seq, by = "1 min")) %>%
  select(-StartTime, -EndTime) %>%
  count(time) %>%
  arrange(desc(n))

# A tibble: 1,303 x 2
#   time                    n
#   <dttm>              <int>
# 1 2019-07-01 18:00:00     4
# 2 2019-07-01 18:01:00     4
# 3 2019-07-01 18:02:00     4
# 4 2019-07-01 18:03:00     4
# 5 2019-07-01 18:04:00     4
# 6 2019-07-01 18:05:00     4
# 7 2019-07-01 18:06:00     4
# 8 2019-07-01 18:07:00     4
# 9 2019-07-01 18:08:00     4
#10 2019-07-01 18:09:00     4
# … with 1,293 more rows
库(dplyr)
图书馆(tidyr)
df%>%
unnest(time=purrr::map2(开始时间,结束时间,顺序,by=“1分钟”))%>%
选择(-StartTime,-EndTime)%>%
计数(时间)%>%
排列(描述(n))
#A tibble:1303x2
#时间n
#                 
# 1 2019-07-01 18:00:00     4
# 2 2019-07-01 18:01:00     4
# 3 2019-07-01 18:02:00     4
# 4 2019-07-01 18:03:00     4
# 5 2019-07-01 18:04:00     4
# 6 2019-07-01 18:05:00     4
# 7 2019-07-01 18:06:00     4
# 8 2019-07-01 18:07:00     4
# 9 2019-07-01 18:08:00     4
#10 2019-07-01 18:09:00     4
#…还有1293行
数据

df <- structure(list(StartTime = structure(c(1561982400, 1561993200, 
1561998540, 1562004000, 1561986720, 1562041800, 1562011800, 1562049600, 
1562033400), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
EndTime = structure(c(1562004840, 1562014020, 1562019840, 
1562024760, 1561993020, 1562061900, 1562020320, 1562069100, 
1562053380), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
TypeOfCar = c("32S", "32S", "32S", "32S", "32S", "32S", "737", 
"32S", "32S")), row.names = c("1", "2", "3", "4", "5", "6", 
"7", "8", "9"), class = "data.frame")

df我们可以在每个
StartTime
EndTime
count
之间创建一个持续时间为1分钟的序列,计算每分钟发生的次数

library(dplyr)
library(tidyr)

df %>%
  unnest(time = purrr::map2(StartTime, EndTime, seq, by = "1 min")) %>%
  select(-StartTime, -EndTime) %>%
  count(time) %>%
  arrange(desc(n))

# A tibble: 1,303 x 2
#   time                    n
#   <dttm>              <int>
# 1 2019-07-01 18:00:00     4
# 2 2019-07-01 18:01:00     4
# 3 2019-07-01 18:02:00     4
# 4 2019-07-01 18:03:00     4
# 5 2019-07-01 18:04:00     4
# 6 2019-07-01 18:05:00     4
# 7 2019-07-01 18:06:00     4
# 8 2019-07-01 18:07:00     4
# 9 2019-07-01 18:08:00     4
#10 2019-07-01 18:09:00     4
# … with 1,293 more rows
库(dplyr)
图书馆(tidyr)
df%>%
unnest(time=purrr::map2(开始时间,结束时间,顺序,by=“1分钟”))%>%
选择(-StartTime,-EndTime)%>%
计数(时间)%>%
排列(描述(n))
#A tibble:1303x2
#时间n
#                 
# 1 2019-07-01 18:00:00     4
# 2 2019-07-01 18:01:00     4
# 3 2019-07-01 18:02:00     4
# 4 2019-07-01 18:03:00     4
# 5 2019-07-01 18:04:00     4
# 6 2019-07-01 18:05:00     4
# 7 2019-07-01 18:06:00     4
# 8 2019-07-01 18:07:00     4
# 9 2019-07-01 18:08:00     4
#10 2019-07-01 18:09:00     4
#…还有1293行
数据

df <- structure(list(StartTime = structure(c(1561982400, 1561993200, 
1561998540, 1562004000, 1561986720, 1562041800, 1562011800, 1562049600, 
1562033400), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
EndTime = structure(c(1562004840, 1562014020, 1562019840, 
1562024760, 1561993020, 1562061900, 1562020320, 1562069100, 
1562053380), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
TypeOfCar = c("32S", "32S", "32S", "32S", "32S", "32S", "737", 
"32S", "32S")), row.names = c("1", "2", "3", "4", "5", "6", 
"7", "8", "9"), class = "data.frame")
df这里有一个类似的问题:我认为,这种方法将大大加快速度