r - 时间戳差异

标签 r

我有一个数据帧,其中包含两个时间戳,如下所示,我无法找到这两个时间戳的区别,但我想要的是第二行开始和第一行结束之间的区别。 我的数据是

time_df <- data.frame(start=as.POSIXct(c('2020-08-23 07:40:59','2020-08-23 08:22:28','2020-08-23 08:54:46','2020-08-23 09:23:17','2020-08-24 07:39:10','2020-08-24 08:13:06','2020-09-01 10:21:04','2020-09-02 06:14:54','2020-09-02 07:44:59'))
,end=as.POSIXct(c('2020-08-23 08:15:23','2020-08-23 08:46:41','2020-08-23 09:17:05','2020-08-23 09:51:20','2020-08-24 08:09:29','2020-08-24 08:37:45','2020-09-01 10:56:41','2020-09-02 06:43:02','2020-09-02 08:08:50')))

我正在尝试

time_df$duration <- as.numeric(difftime(time_df$end,time_df$start,units ="mins"))

但我想找到第二行开始和第一行结束之间的差异,将数据框保持在分钟以上,我想要 (8:22:28 - 8:15:23) 的差异

最佳答案

您可以删除 start 中的第一个值和 end 中的最后一个值,以便获得 start 的第二个值和第一个值的差值end 的值、start 的第三个值和 end 的第二个值,依此类推。我们在开头附加一个 NA 值,以使长度等于行数。

time_df$diff <- c(NA, difftime(time_df$start[-1], 
                               time_df$end[-nrow(time_df)], units = 'mins'))

或者,如果您使用dplyr,则可以使用lag来获取先前的值:

library(dplyr)
time_df %>% mutate(diff = difftime(start, lag(end), units = 'mins'))

#                start                 end         diff
#1 2020-08-23 07:40:59 2020-08-23 08:15:23      NA mins
#2 2020-08-23 08:22:28 2020-08-23 08:46:41     7.1 mins
#3 2020-08-23 08:54:46 2020-08-23 09:17:05     8.1 mins
#4 2020-08-23 09:23:17 2020-08-23 09:51:20     6.2 mins
#5 2020-08-24 07:39:10 2020-08-24 08:09:29  1307.8 mins
#6 2020-08-24 08:13:06 2020-08-24 08:37:45     3.6 mins
#7 2020-09-01 10:21:04 2020-09-01 10:56:41 11623.3 mins
#8 2020-09-02 06:14:54 2020-09-02 06:43:02  1158.2 mins
#9 2020-09-02 07:44:59 2020-09-02 08:08:50    62.0 mins

关于r - 时间戳差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64023807/

相关文章:

r - 使用 dplyr 拟合多个回归模型

R.ggplot2。如何更改 2 条线的颜色,以便在 2-y 轴图上区分它们

javascript - 自动打开 Google map 和街景

r - 用ggplot2从点绘制平均线

r - 如何在 nlme 包中建模嵌套随机效应

r - 如何从图中获取从节点到节点的边权重之和

c++ - 了解通过 RInside 将 Armadillo 矩阵传递给 R 函数

r - 处理 R 中的递归深度限制

r - 如何在 R/RStudio 中安装 "developer mode"中的包?

r - 使用对数刻度时,如何在 ggplot2 中设置轴范围?