r - 计算 R 中两个事件(给定日期和时间)之间的时间差

标签 r posixct strptime

我目前正在努力解决有关计算两个事件之间的时间差的初学者问题。

我想考虑由日期和时间(一列中的两个值)组成的列,并计算与具有相同 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 上找到的。其中大多数使用 POSIXtstrptime。然而,我没有设法将这些想法应用到我的数据集中。

最佳答案

这是我使用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/

相关文章:

python - 为什么 python 的 datetime.datetime.strptime ('201412' , '%Y%m%d' ) 不引发 ValueError?

R数据表: update join

r - 离散值之间的网格线

r - 使用应用函数将选定列从 POSIXct 转换为具有特定格式的日期

string - 将日期时间字符串转换为 R 中的 POSIXct 日期/时间格式

r - 如何使用 POSIXct 类型的列初始化 data.frame?

python - 值错误 : time data '24:00' does not match format '%H:%M'

r - 在R中调用strptime时的毫秒级困惑

R 从向量/因子到列表

r - 如何在变量名称中使用多个正则表达式对数据帧进行子集化?