R中不规则格式的解析时间

里马拉雅

我有一段时间,

  [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”,因为我无法将它们直接解析为difftimes,但是作为POSIXct,所以我将它们0与输出difftimes 进行了比较。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章