r - 计算 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
差异以秒为单位。
谁能帮我解决这个问题?谢谢。
解决方案
退房lag
。它将允许您比较当前值后面的值。这是一个例子:
library(dplyr)
df %>% mutate(diff = start - lag(end))
注意:这将默认为 NA 作为初始值,但您可以将其设置为 0
df$diff[1] <- 0
推荐阅读
- office-js - 以编程方式打开“拆分”窗口模式
- java - Java Program. Need to simplified public boolean equals (object B){ is to long. I do not how to reduce the coding in that part of my program
- python - Python - 旧输入仍在输入缓冲区中?
- javascript - 将工作表添加到 Jquery 数据表的 excel 输出中
- r - 仅使用 2 个向量的部分分量的操作
- java - 为什么没有文件被退回?
- scala - scala中的伴侣对象
- c# - 您如何使用 ProtectedBrowserStorage 和 BlazorServer AspNet 身份验证进行基于 Cookie 的登录?
- android-studio - 不支持此模型:输入张量 0 没有名称
- javascript - 单击按钮时尝试更改游戏动作但不起作用