【发布时间】:2012-12-08 17:46:05
【问题描述】:
我有一系列最长可达 118 小时的持续时间,格式如“118:34:42”,其中 118 是小时,34 是分钟,42 是秒。输出应该是秒数。
我想将其转换为 R 中的某种时间类型,但我查看过的大多数库都想添加日期(lubridate、zoo、xts),或者由于时间原因返回“NA”超出 24 小时范围。我可以解析字符串并返回几秒钟,但我想知道是否有更快的方法。
我对 R 有点陌生(可能需要 3 个月才能使用它)。
任何有关如何处理此问题的帮助将不胜感激。
例子:
library(lubridate)
x <- c("118:34:42", "114:12:12")
tt <- hms(x)
Error in parse_date_time(hms, orders, truncated = truncated, quiet = TRUE) :
No formats could be infered from the training set.
#try another route
w <- "118:34:42"
tt2 <- hms(w)
tt2
#[1] NA
z <- "7:02:02"
tt3 <- hmw(z)
tt3
#[1] "7H 2M 2S"
【问题讨论】:
-
您可以将时间转换为秒:
library(gsubfn); secs <- c(strapply(x, "\\d+", as.numeric) %*% c(3600, 60, 1)),然后在几秒钟内完成所有处理。转换回来:sprintf("%d:%02d:%02d", secs %/% 3600, secs %/% 60 %% 60, secs %% 60)
标签: r duration time-format