我收到了一个文件,其中包含时间,以minutes.seconds为单位,格式如下:
TimeInput <- c(13.66, 14.08, 12.86)
如何将数值(例如13.66)转换为分钟:秒格式具体来说,14:06或14分6秒?
我的预期输出是:
TimeInput <- c(14:06, 14:08, 13:26)
答案 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"