我目前正在努力解决有关计算两个事件之间的时间差的初学者问题。
我想考虑由日期和时间(一列中的两个值)组成的列,并计算与具有相同 ID 的上一行/下一行的值的时间差(A或本例中的 B)。
ID = c("A", "A", "B", "B")
time = c("08.09.2014 10:34","12.09.2014 09:33","13.08.2014 15:52","11.09.2014 02:30")
d = data.frame(ID,time)
我想要的输出格式为“小时:分钟”
time difference = c("94:59","94:59","682:38","682:38")
格式Days:Hours:Minutes
或任何类似的格式也可以使用,只要它可以方便地实现。我对输出的格式很灵活,上面只是我想到的一个想法。
对于每个 ID,我总是有两行(在示例中为 2xA 和 2xB)。我没有令人信服的想法如何避免差异的重复。
我之前尝试过一些例子,是在 stackoverflow 上找到的。其中大多数使用 POSIXt
和 strptime
。然而,我没有设法将这些想法应用到我的数据集中。
最佳答案
这是我使用dplyr
的尝试
library(dplyr)
d %>%
mutate(time = as.POSIXct(time, format = "%d.%m.%Y %H:%M")) %>%
group_by(ID) %>%
mutate(diff = paste0(gsub("[.].*", "", diff(time)*24), ":",
round(as.numeric(gsub(".*[.]", ".", diff(time)*24))*60)))
# Source: local data frame [4 x 3]
# Groups: ID
#
# ID time diff
# 1 A 2014-09-08 10:34:00 94:59
# 2 A 2014-09-12 09:33:00 94:59
# 3 B 2014-08-13 15:52:00 682:38
# 4 B 2014-09-11 02:30:00 682:38
关于r - 计算 R 中两个事件(给定日期和时间)之间的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28091206/