【发布时间】:2023-03-09 03:29:01
【问题描述】:
我有一个如下的数据表:
library(data.table)
DT1<-data.table(
id=c(1,2,3,4,3,2),
in_time=c("2017-11-01 08:37:35","2017-11-01 09:07:44","2017-11-01 09:46:16","2017-11-01 10:32:29","2017-11-01 10:59:25","2017-11-01 13:24:12"),
out_time=c("2017-11-01 08:45:35","2017-11-01 09:15:30","2017-11-01 10:11:16","2017-11-01 10:37:05","2017-11-01 11:45:25","2017-11-01 14:10:09")
)
它包含有关一个人何时进入商店和离开商店的每条信息。
现在我想每 5 分钟(标准 5 分钟,如 0、5、10、15 ...60 分钟)带走一次商店。如果没有,我需要一个 0 值。
所以我尝试了
library(lubridate)
DT1[,time:=ymd_hms(in_time)]
DT1[,time:=ceiling_date(time,"5mins")]
DT1[,.N,by=list(time)]
它只给出了每次有多少人进入,但我现在被困在如何考虑 out_time。例如,id 1 在2017-11-01 08:37:35 输入并在2017-11-01 08:45:35 离开。所以他将在从 2017-11-01 08:40:00 到 5 分钟间隔的商店
2017-11-01 08:45:00 而不是2017-11-01 08:50:00 等等。
一个 id 可以重复多次,就像一个人每天多次光顾商店一样。
感谢任何帮助。
【问题讨论】:
-
id 1 是否被认为是从 2017-11-01 08:35:00 到 2017-11-01 08:40:00 在商店中?如果是,您可以使用
data.table::foverlaps
标签: r dplyr data.table lubridate