我有一个df数据框:
ID time
a 121:24:30
b 130:30:00
导入数据后,时间列是一个因素。 我想将时间列的值转换为分钟。起初,我尝试过:
df$time <- times(df$time)
但是我收到了警告信息:
“日常时间条目”
我注意到我的数据集中小时位置的值大于24。
那我该怎么办呢?
提前致谢!
答案 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