【发布时间】:2019-04-29 07:01:53
【问题描述】:
我有一个带句点的数据集
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
在此期间 id 处于活动状态。我想汇总 ids 并确定
time <- data.table(seq(from=min(active$beg),to=max(active$end),by="mins"))
处于非活动状态的 ID 数量以及它们激活之前的平均分钟数。也就是说,理想情况下,表格看起来像
>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 来完成,但我无法弄清楚获取时差的语法。
【问题讨论】:
-
谢谢!它有助于第一部分,但使第二部分保持打开状态。你知道有什么可以帮助的吗?
标签: r data.table aggregation