【发布时间】:2020-05-26 16:29:45
【问题描述】:
在下面的数据框中,我有可以重复的事件序列,直到生成新事件。
在选择这些相似的行后,我想使用一个函数来帮助我,计算 last seen event 的 timestamp_end 和 first eventtimestamp_start 之间的差异/strong>。
数据框:
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
所以,我尝试了 dplyrpackage 和 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
感谢您在这方面的帮助。
【问题讨论】:
标签: r dataframe datatable dplyr tidyverse