将数值转换为R中的时间

时间:2017-03-26 07:57:04

标签: r

我收到了一个文件,其中包含时间,以minutes.seconds为单位,格式如下:

TimeInput <- c(13.66, 14.08, 12.86)

如何将数值(例如13.66)转换为分钟:秒格式具体来说,14:06或14分6秒?

我的预期输出是:

TimeInput <- c(14:06, 14:08, 13:26)

3 个答案:

答案 0 :(得分:1)

我们可以在不使用任何外部包的情况下尝试

v1 <- (TimeInput-floor(TimeInput)) - 0.60
v2 <- ifelse(v1 > 0, floor(TimeInput) + 1 + v1, TimeInput)
d1 <- data.frame(MinSec = sub(".", ":", v2, fixed = TRUE), 
           TimeRound = floor(v2), stringsAsFactors=FALSE)
d1
#  MinSec TimeRound
#1  14:06        14
#2  14:08        14
#3  13:26        13

答案 1 :(得分:1)

您可以使用POSIX.ct和格式

来实现此目的
TimeInput <- c(13.66, 14.08, 12.86,0)
pct <- as.POSIXct(TimeInput*60,origin = "1960-01-01 00:00:00","GMT")
format(pct,format="%M:%S")
[1] "13:40" "14:05" "12:52" "00:00"

由于时区/必须设置任意原点,解决方案有点烦人。从积极的方面来说,它将处理各种问题(?),如溢出。 如果是这样的话

但是,如果您确实希望分钟数高于60

答案 2 :(得分:0)

我们也可以使用lubridate package

中的函数
library(lubridate)
timeFormt <- ms(TimeInput)
seconds_to_period(minute(timeFormt) * 60 + second(timeFormt))

#[1] "14M 6S"  "14M 8S"  "13M 26S"