【发布时间】:2020-05-03 10:34:52
【问题描述】:
我在 R 中有一个数据集,格式如下:
data = data.table(
id = c(1, 2, 2, 2, 3, 3, 3, 3 ,3, 3),
Start = c("2019-03-01 09:15:36",
"2019-01-01 08:00:00", "2019-01-01 08:00:10","2019-01-01 08:00:30",
"2019-01-01 08:00:30", "2019-01-01 08:00:40","2019-01-01 08:00:50",
"2019-01-01 08:01:10", "2019-01-01 08:01:20","2019-01-01 08:01:31"
))
data$Start = as.POSIXct(data$Start ,format = "%Y-%m-%d %H:%M:%S")
每一行代表与一个人的交互,每个人由 id 标识(在示例数据集中,我有 3 个人)。根据定义,应合并开始日期之间少于 15 秒的交互(仅计为一次)。这个 15 秒的窗口应该随着每次新的交互而延长(参见第 3 个人的示例结果)。
鉴于此规则,对于data,我想创建一个标识唯一交互的新ID 列。结果应该是:
data$newID
[1] 1 2 2 3 4 4 4 5 5 5
这在data.table 中应该是可能的,没有低效的for 循环,但我不能让它工作......
【问题讨论】:
标签: r performance datetime data.table aggregate