R:转换小时:分钟:秒

时间:2015-03-15 23:14:21

标签: r datetime type-conversion

我有一个矢量“Time.Training”,格式为hours:minutes:seconds(例如

Time.Training<- c("1:00:00", "0:45:00", "0:30:00", "1:30:00")

我想将其转换为分钟格式:

Time.Training.Minutes<-c(60, 45, 30, 90)

我想知道某人是否有一种直截了当的方法在R中这样做。

非常感谢。

马特

5 个答案:

答案 0 :(得分:11)

试试这个。我们首先通过使用POSIXlt函数将实际日期粘贴到向量(因为基本R中没有小时类)然后使用Sys.Date()和{{1参数以实现输出

hour

答案 1 :(得分:8)

使用lubridate

Time.Training<- c("1:00:00", "0:45:00", "0:30:00", "1:30:00")

library(lubridate)
res <- hms(Time.Training)        # format to 'hours:minutes:seconds'
hour(res)*60 + minute(res)       # convert hours to minutes, and add minutes
## [1] 60 45 30 90

答案 2 :(得分:7)

以下是一些替代方案:

1) chron包有一个"times"类,其中一天是1个单位,一天有60 * 24分钟,所以:

library(chron)
60 * 24 * as.numeric(times(Time.Training))

,并提供:

[1] 60 45 30 90

1a)使用chron的另一种方法如下(给出相同的答案):

library(chron)

ch <- times(Time.training)
60 * hours(ch) + minutes(ch)

2)以下是使用read.table和矩阵/向量乘法的方法。不需要包裹:

c(as.matrix(read.table(text = Time.Training, sep = ":")) %*% c(60, 1, 1/60))

(使用"POSIXlt"可能是没有包的最直接的方法,但另一个答案已经提供了。)

答案 3 :(得分:6)

使用as.difftime:

> Time.Training<- c("1:00:00", "0:45:00", "0:30:00", "1:30:00")
> strtoi(as.difftime(Time.Training, format = "%H:%M:%S", units = "mins"))
[1] 60 45 30 90

答案 4 :(得分:-1)

从日期时间列中选择小时列,然后创建一个新的Cloumn小时,并仅在该列中提供小时数据2011-01-01 00:00:01 答: bikeshare $ hour <-sapply(bikeshare $ datetime,function(x){format(x,“%H”)})