如何解决如何计算表格中两个间隔之间的时间重叠量
我想计算表中不同行的时间间隔之间的时间量。 这是data.frame的示例:
x <-tibble(name = c("Person1","Person2","Person3","Person4"),group = c("A","A","B","B"),start = c("2020-10-01-10:00","2020-10-01-12:00","2020-10-01-16:00","2020-10-01-16:00"),end = c("2020-10-01-16:00","2020-10-01-18:00","2020-10-01-20:00","2020-10-01-23:00")) %>%
mutate(start = lubridate::ymd_hm(start),end = lubridate::ymd_hm(end)) %>%
mutate(time_interval = interval(start = start,end = end))
我想生成另一列,以显示每个组中人员的time_interval重叠的小时数。 我已经在寻找类似的问题和功能,但是没有找到任何问题。 R中有没有一种方法可以计算时间重叠?
致谢
解决方法
最近的开始时间和最早的结束时间(如果有重叠)之间的间隔不是重叠吗?可以这样计算。如果没有重叠(=“负”重叠),则返回0。
require(lubridate)
x %>%
group_by(group) %>%
mutate(overlap = if_else(condition = max(start) < min(end),true = min(end) - max(start),false = 0))
# A tibble: 4 x 6
# Groups: group [2]
name group start end time_interval overlap
<chr> <chr> <dttm> <dttm> <Interval> <drtn>
1 Person1 A 2020-10-01 10:00:00 2020-10-01 16:00:00 2020-10-01 10:00:00 UTC--2020-10-01 16:00:00 UTC 4 hours
2 Person2 A 2020-10-01 12:00:00 2020-10-01 18:00:00 2020-10-01 12:00:00 UTC--2020-10-01 18:00:00 UTC 4 hours
3 Person3 B 2020-10-01 16:00:00 2020-10-01 20:00:00 2020-10-01 16:00:00 UTC--2020-10-01 20:00:00 UTC 4 hours
4 Person4 B 2020-10-01 16:00:00 2020-10-01 23:00:00 2020-10-01 16:00:00 UTC--2020-10-01 23:00:00 UTC 4 hours
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。