首页 > 解决方案 > 如何用 lubridate 求和或平均多个重叠时间间隔?

问题描述

我有一份多年的冥想记录,每一次都有开始和结束的时间。我想为我一天中最活跃的时间创建漂亮的情节。(换句话说,与一天中的其他时间相比,我在早上 7 点冥想的频率是多少?)

     ID           StartTime             EndTime
1  2679 2019-03-23 07:00:00 2019-03-23 07:30:00
2  2678 2019-03-22 07:00:00 2019-03-22 07:30:00
3  2677 2019-03-21 07:00:00 2019-03-21 07:30:00
4  2676 2019-03-20 07:00:00 2019-03-20 07:30:00
5  2675 2019-03-19 07:00:00 2019-03-19 07:30:00
6  2674 2019-03-18 09:00:00 2019-03-18 09:30:00
7  2673 2019-03-18 09:00:00 2019-03-18 09:30:00
8  2672 2019-03-18 09:00:00 2019-03-18 10:00:00
9  2671 2019-03-15 07:00:00 2019-03-15 08:00:00
10 2670 2019-03-14 07:00:00 2019-03-14 08:00:00

输出版本:

structure(list(ID = 2679:2670, StartTime = structure(c(1553324400, 
1553238000, 1553151600, 1553065200, 1552978800, 1552899600, 1552899600, 
1552899600, 1552633200, 1552546800), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), EndTime = structure(c(1553326200, 1553239800, 
1553153400, 1553067000, 1552980600, 1552901400, 1552901400, 1552903200, 
1552636800, 1552550400), class = c("POSIXct", "POSIXt"), tzone = "UTC")), row.names = c(NA, 
-10L), class = "data.frame")

我可以通过将每一天变成一个包含/排除分钟的 1440 元素数组并将它们总结起来来解决这个问题。得到这样的东西 我一分钟一分钟调解的次数

但我觉得必须有更好的方法。可能使用Interval来自lubridate和/或的对象dplyr。但我还没有弄清楚如何做到这一点。

标签: rlubridate

解决方案


推荐阅读