r - 在 R 中,使用 lubridate 将 hms 对象转换为秒

标签 r lubridate

lubridate 中的一个简单问题——我想将 hms 对象转换为自一天开始以来的适当秒数。

例如

library(lubridate)
hms("12:34:45")

那么我想知道 12 小时 34 分 45 秒到底有多长,以秒为单位

一些明显的东西
seconds(hms("12:34:45"))

刚回来
45s

这不是我想要的。如何将这些 hms 值转换为秒?我想使用lubridate

最佳答案

您使用哪个包无关紧要 - 它会将日期/日期时间对象转换为自纪元以来秒的 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>

关于r - 在 R 中,使用 lubridate 将 hms 对象转换为秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11298327/

相关文章:

r - 如何使用 iGraph 和 RStudio 在 R 中保存 "get.adjacency()"的邻接矩阵?

r - 带格子包的 equal.count() 的带状疱疹

r - data.table: lapply 一个具有多列输出的函数

r - ggplot根据月份的阴影背景

r - 为函数 "method with signature ‘Timespan#Timespan’“选择的润滑注释 ‘%/%’是什么意思?

r - 将文本中包含的半年格式设置为日期

c# - 在 R 中,如何以 yyyymmdd 格式输出 lubridate 兼容日期? .NET 中相当于 .ToString ("yyyyMMdd")?

r - 计算动态日期时间范围内每组的观察值

r - 使用 `pattern` 正确订购

r - ggplot2 和 TikzDevice - 删除空白