首页 > 解决方案 > 计算 R 中 2 个日期时间 ("%Y-%m-%dT%H:%M:%OS-05:00") 列之间经过的时间

问题描述

我要解决的问题是我有 2 个 POSIXct 变量( start 和 end )。每一行都是分类的,我想获得每个级别的每一行之间的时间差。

我的数据会像

category        start                              end                    level  
a         2018-03-26T11:13:43.5-05:00      2018-03-26T11:13:44.5-05:00      1  
a         2018-03-26T11:13:45.5-05:00      2018-03-26T11:13:46.5-05:00      2  
a         2018-03-26T11:13:48.5-05:00      2018-03-26T11:13:48.5-05:00      3

对于级别 1,它始终为零,因为该类别没有前一行。对于第 2 级,经过的时间应该是 2018-03-26T11:13:45.5-05:00(如果第 2 级开始)- 2018-03-26T11:13:44.5-05:00(第 1 级结束)同样的方式对于第 3 级,它是第 3 级开始和第 2 级结束的差异预期输出:

category   start                                end                 level   diff  
a         2018-03-26T11:13:43.5-05:00    2018-03-26T11:13:44.5-05:00  1      0  
a         2018-03-26T11:13:45.5-05:00    2018-03-26T11:13:46.5-05:00  2      1  
a         2018-03-26T11:13:48.5-05:00    2018-03-26T11:13:48.5-05:00  3      2  

差异以秒为单位。

谁能帮我解决这个问题?谢谢。

标签: rdplyr

解决方案


退房lag。它将允许您比较当前值后面的值。这是一个例子:

library(dplyr)
df %>% mutate(diff = start - lag(end))

注意:这将默认为 NA 作为初始值,但您可以将其设置为 0 df$diff[1] <- 0


推荐阅读