1

是否有一个函数(内置或打包)可以解析像"25:15:00"“第二天 1:15”这样的时间?不幸的是,as.POSIXct不喜欢它的%X规范(相当于%H:%M:%S),

> as.POSIXct('25:15:00', format='%X')
[1] NA
> as.POSIXct('15:15:00', format='%X')
[1] "2013-05-24 15:15:00 CEST"

strptime而且我在文档中找不到合适的转换规范。

4

2 回答 2

2

未经过彻底测试,但您可以尝试此功能

parse_time <- function(x, format = "%X") {
    hour <- as.numeric(substr(x, 1, 2))
    delta <- ifelse(hour >= 24, 24 * 3600, 0)
    hour <- hour %% 24
    date <- paste0(hour, substr(x, 3, nchar(x)))
    strptime(date, format = format) + delta
}

parse_time(c('25:15:00', "23:10:00"))
##[1] "2013-05-25 01:15:00 GMT" "2013-05-24 23:10:00 GMT"
于 2013-05-24T21:58:44.237 回答
0

现在有:

library(devtools)
install_github('kimisc', 'krlmlr')
library(kimisc)
hms.to.seconds('25:15:00')

它使用了与 dickoa 的代码略有不同的方法:gsub使用合适的正则表达式过滤参数,实际转换完全不涉及strptime。见代码

于 2013-05-27T08:07:48.373 回答