【发布时间】:2023-04-06 16:38:01
【问题描述】:
我有一个数据集,df:(数据集包含超过 4000 行)
DATEB
9/9/2019 7:51:58 PM
9/9/2019 7:51:59 PM
9/9/2019 7:51:59 PM
9/9/2019 7:52:00 PM
9/9/2019 7:52:01 PM
9/9/2019 7:52:01 PM
9/9/2019 7:52:02 PM
9/9/2019 7:52:03 PM
9/9/2019 7:54:00 PM
9/9/2019 7:54:02 PM
9/10/2019 8:00:00PM
如果日期-时间之间的时间超过 120 秒,我想将它们放在不同的组中,并记录持续时间。
期望的输出:
Group Duration
a 5 sec
b 2 sec
c 0 sec
dput:
structure(list(DATEB = structure(c(2L, 3L, 3L, 4L, 5L, 5L, 6L,
7L, 8L, 9L, 1L), .Label = c(" 9/10/2019 8:00:00 PM", " 9/9/2019 7:51:58 PM",
" 9/9/2019 7:51:59 PM", " 9/9/2019 7:52:00 PM", " 9/9/2019 7:52:01 PM",
" 9/9/2019 7:52:02 PM", " 9/9/2019 7:52:03 PM", " 9/9/2019 7:54:00 PM",
" 9/9/2019 7:54:02 PM"), class = "factor")), class = "data.frame", row.names = c(NA,
-11L))
我已经尝试了下面的代码,效果很好,除了我希望 7:51:59 和 7:52:00 在同一个组中。持续时间应该中断并创建新组的唯一时间是日期时间之间的时间超过 120 秒。
df %>%
mutate(DATEB = lubridate::mdy_hms(DATEB),
temp = floor_date(DATEB, "120 secs")) %>%
group_by(temp) %>%
summarise(duration = difftime(max(DATEB), min(DATEB), units = "secs"))
欢迎提出任何建议。
【问题讨论】:
-
您是否正在寻找比 后续 个日期时间之间的给定阈值更长的 间隙 或 暂停?您的话“日期时间之间的时间超过 120 秒”确实表明了这一点。
-
我的意思是如果前几行之间的时间长于给定的时间段,我希望创建一个新组及其持续时间。