自特定日期午夜以来的持续时间(以秒为单位)

Duration in seconds since midnight on specific day

假设我有一个开始日期和时间“2016-01-09 15:23:26”,并且在不同的时间间隔进行测量,并为每次测量记录日期和时间。

示例数据如下:

date           time         date_time            clock
"2016-01-09"   "15:23:26"   2016-01-09 15:23:2   0s (0 seconds)      
"2016-01-10"   "23:59:53"   2016-01-09 23:59:53  30987s (~8.61 hours)
"2016-01-10"   "00:04:53"   NA                   NA
"2016-01-10"   "01:04:55"   2016-01-10 01:04:55  34889s (~9.69 hours) 

如果我尝试使用 lubridate 来计算持续时间,以自开始时间起的分钟数为单位,除了第 3 行(日期为“2016-01-10”并且时间是“00:04:53”。我试图在网上寻找一些可能的解释来解释这里出了什么问题,但无济于事。我错过了什么?我的代码如下:

library(lubridate)
df$date2 = mdy(df$Date)
df$time2 = hms(df$Time)
df$date_time = paste(df$date2, df$time2, sep = " ")
df$date_time = ymd_hms(df$date_time)
df$start_time = ymd_hms("2016-01-09 15:23:26", tz="UTC")
df$clock = as.duration(df$date_time - df$start_time)

粘贴日期和时间时,由于第三次不到一小时,ymd_hms()无法识别

因为你已经有了POSIXct对象,你可以直接对它们求和。

只需替换:

df$date_time = paste(df$date2, df$time2, sep = " ")
df$date_time = ymd_hms(df$date_time)

作者:

df$date_time = df$date2+df$time2