我有一个矢量“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中这样做。
非常感谢。
马特
答案 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”)})