В приведенном ниже кадре данных у меня есть последовательности событий, которые могут повторяться до тех пор, пока не будет сгенерировано новое событие. Я хотел бы использовать функцию, которая помогает мне после выбора этих похожих строк, вычисляет разницу между timestamp_end
последнего увиденного события *1003* и timestamp_start
первого события .
Фрейм данных:
DF1 <- data.frame(segment_id = c(1, 1, 1, 1, 2 , 3, 4), first_event= c("a", "a", "a","a", "a", "b","c" ), second_event = c("a", "a","a","a", "b", "c", "c"), timestamp_start = c("2019-06-06 11:47:00","2019-06-06 12:59:38", "2019-06-06 13:01:03", "2019-06-06 14:47:03 ", "2019-06-06 18:47:00", "2019-06-06 22:47:00", "2019-06-07 02:47:00") , timestamp_end = c("2019-06-06 12:59:38", "2019-06-06 13:01:03", "2019-06-06 14:47:03", "2019-06-06 18:47:00", "2019-06-06 22:47:00 ", "2019-06-07 02:47:00", "2019-06-07 06:47:00"))
segment_id first_event second_event timestamp_start timestamp_end
1 a a 2019-06-06 11:47:00 2019-06-06 12:59:38
1 a a 2019-06-06 12:59:38 2019-06-06 13:01:03
1 a a 2019-06-06 13:01:03 2019-06-06 14:47:03
1 a a 2019-06-06 14:47:03 2019-06-06 18:47:00
2 a b 2019-06-06 18:47:00 2019-06-06 22:47:00
3 b c 2019-06-06 22:47:00 2019-06-07 02:47:00
4 c c 2019-06-07 02:47:00 2019-06-07 06:47:00
Итак, я попробовал пакет dplyr
и функции group_by()
и mutate()
. Однако я не уверен, какая функция может помочь мне получить продолжительность.
DF2 <- DF1 %>%
group_by(segment_id)%>%
mutate("duration" = difftime(????) , units = 'hours')
Окончательный результат, который я ищу, так как DF2
должен выглядеть следующим образом:
>DF2
segment_id first_event second_event timestamp_start timestamp_end duration
1 a a 2019-06-06 11:47:00 2019-06-06 18:47:00 7
2 a b 2019-06-06 18:47:00 2019-06-06 22:47:00 4
3 b c 2019-06-06 22:47:00 2019-06-07 02:47:00 4
4 c c 2019-06-07 02:47:00 2019-06-07 06:47:00 4
Буду признателен за вашу помощь в этом.