说我有开始日期和时间" 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)
答案 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