我有一段时间,
[1] "9.58" "19.19" "43.03" "1:40.91" "2:11.96" "3:26.00"
[7] "3:43.13" "4:44.79" "7:20.67" "12:37.35" "26:17.53" "26:44"
其中一些只有十进制的秒数。其中一些有分钟和小时,并以“:”分隔
我希望所有这些都以一个单位(秒或分钟或小时)。我怎样才能在 R 中做到这一点
我总是非常不愿意手动解析日期和时间,与其他构建专用工具的测试工作相比,我对自己的代码的信任程度要低得多。
所以我会使用lubridate
例如:
library(lubridate)
data <-
c("9.58", "19.19", "43.03", "1:40.91", "2:11.96", "3:26.00",
"3:43.13", "4:44.79", "7:20.67", "12:37.35", "26:17.53", "26:44")
difftime(parse_date_time(data, orders = c("%H %M %OS", "%M %OS", "%OS")),
parse_date_time("0", orders = "%S"))
# Time differences in secs
# [1] 9.580002 19.190002 43.029999 100.910004 131.959999
# [6] 206.000000 223.129997 284.790001 440.669998 757.349998
# [11] 1577.529999 1604.000000
lubridate
提供了提供连续尝试的多种解析格式的有利可能性(c("%H:%M:%OS", "%M:%OS", "%OS")
在这里,还要注意:
可以省略分隔符,以便在格式不佳的输入数据的情况下进行更强大的解析)。
我的解决方案仍然有些“hacky”,因为我无法将它们直接解析为difftime
s,但是作为POSIXct
,所以我将它们0
与输出difftime
s 进行了比较。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句