Как суммировать или усреднять многократно перекрывающиеся временные интервалы с помощью lubridate?

#r #lubridate

#r #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
  

dput версия:

 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 . Но я не разобрался, как это сделать.

Комментарии:

1. пожалуйста, предоставьте данные, используя dput()

2. предоставьте нам ожидаемый результат. Мне будет легче помочь