R 将时间文本变量转换为数字

R 将时间文本变量转换为数字,r,R,我有下面的变量,我想把它转换成分钟,然后得到一个数值变量 目前,我正在做以下工作: require(lubridate) time <- c("1 hour 10 mins", "1 hour 0 mins", "12 mins", "1 hour 0 mins", "1 hour 4 mins", "1 hour 0 mins", "1 hour 0 mins", "1 hour 0 mins", "1 hour 5 mins", "1 h

我有下面的变量,我想把它转换成分钟,然后得到一个数值变量

目前,我正在做以下工作:

require(lubridate)
time <- c("1 hour 10 mins", "1 hour 0 mins", "12 mins", "1 hour 0 mins", 
           "1 hour 4 mins", "1 hour 0 mins", "1 hour 0 mins", "1 hour 0 mins", 
           "1 hour 5 mins", "1 hour 0 mins", "34 mins", "1 hour 0 mins", 
           "50 mins", "1 hour 0 mins", "1 hour 0 mins", "1 hour 0 mins", 
           "1 hour 0 mins", "1 hour 0 mins", "1 hour 0 mins", "1 hour 0 mins", 
           "1 hour 0 mins", "1 hour 0 mins", "1 hour 34 mins", "1 hour 0 mins", 
           "43 mins", "1 hour 20 mins", "1 hour 0 mins", "1 hour 0 mins", 
           "1 hour 0 mins", "1 hour 30 mins", "1 hour 0 mins")

minute(strptime(time,'%M'))
require(润滑油)
时间<代码>要求(润滑)
时间<代码>要求(润滑)
时间这里有一个方法:

library(chron)

times <- c("1 hour 10 mins", "1 hour 0 mins", "12 mins", "1 hour 0 mins", 
"1 hour 4 mins", "1 hour 0 mins", "1 hour 0 mins", "1 hour 0 mins", 
"1 hour 5 mins", "1 hour 0 mins", "34 mins", "1 hour 0 mins", 
"50 mins", "1 hour 0 mins", "1 hour 0 mins", "1 hour 0 mins", 
"1 hour 0 mins", "1 hour 0 mins", "1 hour 0 mins", "1 hour 0 mins", 
"1 hour 0 mins", "1 hour 0 mins", "1 hour 34 mins", "1 hour 0 mins", 
"43 mins", "1 hour 20 mins", "1 hour 0 mins", "1 hour 0 mins", 
"1 hour 0 mins", "1 hour 30 mins", "1 hour 0 mins")

# Add "0 hour" when only minutes are present
times <- sub(pattern = "^(\\d+ mins)",replacement = "0 hour \\1", times)

# Change format simply to ease next step
times <- sub(pattern = "^(\\d+) hours? (\\d+) mins", replacement = "\\1\\:\\2", times)

# Convert to a real time vector
times.2 <- strptime(x = times, format = "%H:%M")

# Extract number of minutes
minutes <- 60*hours(times.2) + minutes(times.2)
这里有一个方法:

library(chron)

times <- c("1 hour 10 mins", "1 hour 0 mins", "12 mins", "1 hour 0 mins", 
"1 hour 4 mins", "1 hour 0 mins", "1 hour 0 mins", "1 hour 0 mins", 
"1 hour 5 mins", "1 hour 0 mins", "34 mins", "1 hour 0 mins", 
"50 mins", "1 hour 0 mins", "1 hour 0 mins", "1 hour 0 mins", 
"1 hour 0 mins", "1 hour 0 mins", "1 hour 0 mins", "1 hour 0 mins", 
"1 hour 0 mins", "1 hour 0 mins", "1 hour 34 mins", "1 hour 0 mins", 
"43 mins", "1 hour 20 mins", "1 hour 0 mins", "1 hour 0 mins", 
"1 hour 0 mins", "1 hour 30 mins", "1 hour 0 mins")

# Add "0 hour" when only minutes are present
times <- sub(pattern = "^(\\d+ mins)",replacement = "0 hour \\1", times)

# Change format simply to ease next step
times <- sub(pattern = "^(\\d+) hours? (\\d+) mins", replacement = "\\1\\:\\2", times)

# Convert to a real time vector
times.2 <- strptime(x = times, format = "%H:%M")

# Extract number of minutes
minutes <- 60*hours(times.2) + minutes(times.2)
另一种选择(类似的逻辑但不同的方法):

另一种选择(类似的逻辑但不同的方法):


as.character(x)中出错:无法将类型“closure”强制为类型“character”的向量。嗯,可能尝试重新启动R会话。。。我在这里没有收到任何错误。。。。您在哪一步收到此错误消息?as.character(x)中的错误:无法将类型“closure”强制为类型为“character”的向量嗯,请尝试重新启动您的R会话。。。我在这里没有收到任何错误。。。。您在哪一步收到此错误消息?
> minutes
 [1] 70 60 12 60 64 60 60 60 65 60 34 60 50 60 60 60 60 60 60 60 60 60 94
[24] 60 43 80 60 60 60 90 60
library(lubridate)

x[!grepl("hour", x)] <- paste("0 hour", x[!grepl('hour', x)], sep = " ")
hour(strptime(x, "%H hour %M mins"))*60 + minute(strptime(x, "%H hour %M mins"))
# [1] 70 60 12 60
c("1 hour 10 mins", "1 hour 0 mins", "0 hour 12 mins", "1 hour 0 mins"
)