在lubridate中的简单问题 - 我希望将hms对象转换为自当天开始以来的适当秒数。
例如
library(lubridate)
hms("12:34:45")
然后我想知道12小时,34分钟和45秒的确切时间,以秒为单位
显而易见的事情
seconds(hms("12:34:45"))
只返回
45s
这不是我想要的。如何将这些hms值转换为秒?我想用lubridate
答案 0 :(得分:22)
R>lubridate::period_to_seconds(hms("01:00:00"))
从00:00:00开始给出预期的3600秒作为数字计数 或者在上面的情况下:
R>period_to_seconds(hms("12:34:45"))
答案 1 :(得分:10)
使用哪个包无关紧要 - 它会将日期/日期时间对象转换为自纪元以来秒数的POSIXct表示。所以你也可以在基础R中这样做 - 所以今天使用任意一天部署ISOdatetime()
,今天使用:
R> difftime(ISOdatetime(2012,7,2,12,34,45), ISOdatetime(2012,7,2,0,0,0))
Time difference of 12.5792 hours
所以我们想要秒:
R> difftime(ISOdatetime(2012,7,2,12,34,45), ISOdatetime(2012,7,2,0,0,0),
+ unit="secs")
Time difference of 45285 secs
我们可以投射到数字:
R> as.numeric(difftime(ISOdatetime(2012,7,2,12,34,45), +
ISOdatetime(2012,7,2,0,0,0), unit="secs"))
[1] 45285
编辑:回到lubridate,这可以说是一个错误:
> hms("12:34:45") - hms("00:00:00")
[1] 12 hours, 34 minutes and 45 seconds
R> as.numeric(hms("12:34:45") - hms("00:00:00"))
[1] 45
R>