我有一个以小时、分钟和秒为单位的事件时间向量。现在我想把这些时间都换算成分钟。例如,01:02:18将变成62分钟。
我的数据:
times
"01:02:18" "01:47:37" "01:18:48" "01:32:54" "01:09:41" "01:50:30"
代码:
time = format(strptime(matchtime,"%H:%M:%S"),'%M')
我猜我们可以把小时和分钟加起来。然而,我不确定如何做到这一点。
如果我们想提取分钟和小时
library(lubridate)
v1 <- hms(times)
v1@hour * 60 + v1@minute
[1] 62 107 78 92 69 110
或者也包括秒
period_to_seconds(hms(times))/60
[1] 62.30000 107.61667 78.80000 92.90000 69.68333 110.50000
in base R:
difftime(strptime(matchtime,"%T"), strptime('0:0:0','%T'), units = 'min')
Time differences in mins
[1] 62.30000 107.61667 78.80000 92.90000 69.68333 110.50000
一样:
as.numeric(strptime(matchtime,"%T") - strptime('0:0:0', "%T"),'mins')
[1] 62.30000 107.61667 78.80000 92.90000 69.68333 110.50000
编辑
使用data.table:
as.numeric(data.table::as.ITime(matchtime))/60
[1] 62.30000 107.61667 78.80000 92.90000 69.68333 110.50000
可以使用as.difftime
,设置为mins
。
as.difftime(times, units = "mins")
#Time differences in mins
#[1] 62.30000 107.61667 78.80000 92.90000 69.68333 110.50000
使用floor
忽略秒。
floor(as.difftime(times, units = "mins"))
#Time differences in mins
#[1] 62 107 78 92 69 110
数据times <- c("01:02:18", "01:47:37", "01:18:48", "01:32:54", "01:09:41", "01:50:30")