У меня есть набор данных с периодами
active <- data.table(id=c(1,1,2,3), beg=as.POSIXct(c("2018-01-01 01:10:00","2018-01-01 01:50:00","2018-01-01 01:50:00","2018-01-01 01:50:00")), end=as.POSIXct(c("2018-01-01 01:20:00","2018-01-01 02:00:00","2018-01-01 02:00:00","2018-01-01 02:00:00")))
> active
id beg end
1: 1 2018-01-01 01:10:00 2018-01-01 01:20:00
2: 1 2018-01-01 01:50:00 2018-01-01 02:00:00
3: 2 2018-01-01 01:50:00 2018-01-01 02:00:00
4: 3 2018-01-01 01:50:00 2018-01-01 02:00:00
, в течение которых был активен идентификатор.Я хотел бы агрегировать по ids
и определять для каждой точки в
time <- data.table(seq(from=min(active$beg),to=max(active$end),by="mins"))
количество неактивных идентификаторов и среднее количество минут до их активации.То есть в идеале таблица выглядит так:
>ans
time inactive av.time
1: 2018-01-01 01:10:00 2 30
2: 2018-01-01 01:11:00 2 29
...
50: 2018-01-01 02:00:00 0 0
Я считаю, что это можно сделать с помощью data.table
, но я не могу понять синтаксис, чтобы получить разницу во времени.