gpt4 book ai didi

r - date[i + 1] 和 date[i] 按组的时间差

转载 作者:行者123 更新时间:2023-12-04 02:17:54 26 4
gpt4 key购买 nike

我想按组计算 tab$date[i + 1] 和 tab$date[i] 之间的时间差(以小时为单位)。这是我的代码:

setDT(tab)
system.time(tab <- tab[ , diffTime := c(0,diff(date, units="hours")), by="ID"])
tab$diffTime <- round(tab$diffTime)

问题是我同时获得了小时、分钟和秒:

Date                   DiffTime
2012-03-05 01:00:36 0
2012-03-05 03:00:35 2
2012-03-05 05:01:05 2
...
2010-01-29 21:01:00 0
2010-01-29 22:01:01 60
2010-01-29 23:01:12 60
...
2012-02-13 05:00:34 0
2012-02-13 16:01:06 39632
2012-02-14 03:00:47 39581

日期是 POSIXct 数据。我怎样才能只获得小时数?

最佳答案

我们可以使用 difftime 并将 units 指定为“小时”。

library(data.table)
setDT(tab)[, DiffTime := c(0, round(difftime(date[-1L], date[-.N],
units='hours'))), by= ID]
tab
# ID date DiffTime
#1: 1 2012-03-05 01:00:36 0
#2: 1 2012-03-05 03:00:35 2
#3: 1 2012-03-05 05:01:05 2
#4: 2 2010-01-29 21:01:00 0
#5: 2 2010-01-29 22:01:01 1
#6: 2 2010-01-29 23:01:12 1

数据

tab <- data.frame(ID= rep(1:2, each=3),
date= as.POSIXct(c('2012-03-05 01:00:36', '2012-03-05 03:00:35',
'2012-03-05 05:01:05', '2010-01-29 21:01:00', '2010-01-29 22:01:01',
'2010-01-29 23:01:12'), format='%Y-%m-%d %H:%M:%S'))

关于r - date[i + 1] 和 date[i] 按组的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32911879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com