如何为一年的日期时间数据创建一个以30分钟间隔为间隔的24小时窗口,并平均每个30分钟间隔中的发生次数

时间:2019-04-15 20:33:21

标签: r

例如,当患者到达医院时,会记录到达日期和时间(15/04/2018 6:60:30)。在过去的一年中,有成千上万的患者登记在册,我有兴趣在24小时内获得患者到达总数的分布。

数据框的其中一列包含跨越两个不同年份的日期/时间值(如下表所示)。每个观察结果代表患者的到来。

31/12/2017 20:24
31/12/2017 21:24
31/12/2017 21:34
31/12/2017 22:55
31/12/2017 22:55
31/12/2017 23:18
31/12/2017 23:37
31/12/2017 23:37
31/12/2017 23:49
01/01/2018 0:15
01/01/2018 0:23
01/01/2018 0:56
01/01/2018 1:08
01/01/2018 1:27
01/01/2018 2:44

我想算出在24小时和7天的时间间隔内每30分钟间隔的平均到达时间。

我只是不知道如何完成它。新手在这里!拜托,我需要你的帮助。谢谢

我尝试过

arrivaltime <- dmy_hm(mydata$Time.of.arrival, tz = "US/Eastern")
head(arrivaltime)

MyArrivalDatesTable<-data.frame(table((cut(arrivaltime,breaks = "30 mins"))))
head(MyArrivalDatesTable)

但是我仍然没有得到正确的输出。

预期结果:

7天窗口

Day Time    mean arrival 
Mon 0:00    1.057534247
Mon 0:30    1.087671233
Mon 1:00    0.882191781
Mon 1:30    0.745205479
Mon 2:00    0.64109589
Mon 2:30    0.589041096
Mon 3:00    0.652054795
Mon 3:30    0.663013699
Mon 4:00    0.616438356
...
24-h window

Time    mean arrival
0:00    1.057534247
0:30    1.087671233
1:00    0.882191781
1:30    0.745205479
2:00    0.64109589
2:30    0.589041096
3:00    0.652054795
3:30    0.663013699
4:00    0.616438356
...

1 个答案:

答案 0 :(得分:0)

library(dplyr)
library(lubridate)

count(weekday = wday(arrivaltime), 
      hour    = floor_date(arrivaltime, "30 minutes")) %>%
mutate(mean_arrival = n / 365)