У меня есть таблица данных, как показано ниже:
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. Например, идентификатор 1 вошел в 2017-11-01 08:37:35
и ушел в 2017-11-01 08:45:35
. Таким образом, он будет в магазине в течение 5 минут интервал от 2017-11-01 08:40:00
до 2017-11-01 08:45:00
а не в 2017-11-01 08:50:00
и так далее.
Идентификатор может повторяться несколько раз, как будто один человек заходил в магазин несколько раз в день.
Любая помощь приветствуется.
https://www.r-bloggers.com/comparing-the-execution-time-between-foverlaps-and-findoverlaps/
. 02.06.2020