在R中将因子转换为时间

时间:2015-10-11 20:55:32

标签: r time dataframe

我有一个df数据框:

ID  time 
a    121:24:30
b    130:30:00

导入数据后,时间列是一个因素。 我想将时间列的值转换为分钟。起初,我尝试过:

df$time <- times(df$time)

但是我收到了警告信息:

  

“日常时间条目”

我注意到我的数据集中小时位置的值大于24。

那我该怎么办呢?

提前致谢!

3 个答案:

答案 0 :(得分:4)

您可以使用 lubridate 包。

library(lubridate)
x <- hms(df$time)
(hour(x) * 60) + minute(x) + (second(x) / 60)
# [1] 7284.5 7830.0

答案 1 :(得分:3)

假设您的数据保存为 dat ,请使用以下

#convert to character
dat$time <- as.character(dat$time)
#split by ":"
times <- strsplit(dat$time, ":")
# get minutes
dat$time <- sapply(times, function(x){
  x = as.numeric(x)
  x[1]*60+x[2]+x[3]/60
})

答案 2 :(得分:2)

另一个选择(仅仅是为了好玩)是使用gsubfn

s <- factor(c("121:24:30", "130:30:00"))
library(gsubfn)
as.numeric(gsubfn("(\\d+):(\\d+):(\\d+)", 
                  ~ as.numeric(x)*60 + as.numeric(y) + as.numeric(z)/60, 
                  as.character(s)))
## [1] 7284.5 7830.0