【发布时间】:2020-04-22 20:05:59
【问题描述】:
R 有没有办法按 ID 分组,识别时间“中断”,将其设置为 0,然后计算时间差?
例如:
ID TIME
A 12/18/2019 4:45:10 AM
A 12/18/2019 4:45:11 AM
A 12/18/2019 9:06:59 PM
B 12/18/2019 4:14:13 AM
B 12/18/2019 4:14:14 AM
有人知道找到 A 持续时间的方法吗?请注意,这不是 difftime 问题。我在凌晨 4:45:10 执行了某项活动,然后在凌晨 4:45:11 再次执行。然后我停止了这项活动,并在晚上 9 点 06 分恢复。是否有代码可以准确地对 ID 进行分组,然后以秒为单位计算时间差,同时将时间间隔设置为“0”以避免不准确的值?
这不是正确的解决方案。
diff<- data %>%
mutate(diff = difftime(as.POSIXct(Endtime, format = "%m/%d/%Y %I:%M:%S %p"),
as.POSIXct(Starttime, format = "%m/%d/%Y %I:%M:%S %p"), units = "secs"))
结果:
ID TIME Duration
A 12/18/2019 4:45:10 AM 1 sec
A 12/18/2019 4:45:11 AM
A 12/18/2019 9:06:59 PM 0 sec
B 12/18/2019 4:14:13 AM 1 sec
B 12/18/2019 4:14:14 AM
非常感谢任何帮助。 我会继续研究这个。谢谢
【问题讨论】:
-
你能在帖子中显示预期的输出吗
-
您好,我已经添加了预期的输出。我想按 ID 分组,配对相似的日期时间并计算它们的持续时间。此 ID 中任何不同小时或分钟的日期时间都将被分配值 0。
-
如果超过 1 秒,你是否在进行剪切
-
如果小时和分钟与其上方的行不连续,我将值分配给 0