【发布时间】:2020-10-27 12:18:03
【问题描述】:
我需要弄清楚一天中的时间间隔和预定的几小时之间有多少时间重叠。
这是示例数据
require(tidyverse)
example <- tibble::tribble(
~`"Session"`, ~`"SessionStartTime"`, ~`"SessionEndTime"`, ~`"TotalDuration"`,
1L, "2020-09-10 09:05:50", "2020-09-11 05:50:02", 1244.2,
2L, "2020-09-10 23:55:20", "2020-09-11 01:20:20", 85,
3L, "2020-09-11 01:11:30", "2020-09-11 02:12:02", 60.5333333333333,
4L, "2020-09-11 02:20:30", "2020-09-11 03:00:02", 39.5333333333333
)
这是我正在寻找的输出:
output <- tibble::tribble(
~Session, ~`00:00-03:00`, ~`03:00-06:00`, ~`06:00-09:00`, ~`09:00-12:00`, ~`12:00-15:00`, ~`15:00-18:00`, ~`18:00-21:00`, ~`21:00-00:00`,
1L, "3 hours", "2.82 hours", NA, NA, NA, NA, NA, "2.902778 hours",
2L, "1.338889 hours", NA, NA, NA, NA, NA, NA, "4.666667 mins",
3L, "60.53333 mins", NA, NA, NA, NA, NA, NA, NA,
4L, "2.341667 hours", "2 seconds", NA, NA, NA, NA, NA, NA
)
我尝试过 lubridate::interval,但遇到了会话与多个括号重叠以及会话跨越数天的问题。 我也尝试过 chron 但无法处理第二天 5:00 和前一天 23:00 之间的差异。
【问题讨论】: