特定日期午夜以来的持续时间

时间:2016-02-12 23:11:40

标签: r lubridate

说我有开始日期和时间" 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&#34)之外的所有计算都可以正常运行;时间是" 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)

1 个答案:

答案 0 :(得分:1)

当您粘贴日期和时间时,因为第三次不到一小时,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