将 "x hours y minutes" 的时间格式转换为数字
Convert time format with "x hours y minutes" to numeric
我有一个变量指示事件发生后的时间,它的编码如下:
time_since_event <- c("18 m", "56 m", "2 h 30 m", "18 h 2 m")
我希望它是数字并始终指示事件发生后的分钟数:
time_since_event_min <- c(18,56,150,1082)
你可以使用 strsplit
:
time_since_event <- c("18 m", "56 m", "2 h 30 m", "18 h 2 m")
sapply(strsplit(time_since_event, "\D+"),
function(x) {
x <- as.numeric(x);
if(length(x) == 2) return(60 * x[1] + x[2]) else return(x)
})
#> [1] 18 56 150 1082
您可以使用 lubridate
函数:
library(lubridate)
(time_since_event %>% toupper %>% period %>% period_to_seconds())/60
#[1] 18 56 150 1082
我们可以提取成分并得到总和
library(lubridate)
v1 <- as.period(toupper(time_since_event))
v1@hour * 60 + v1@minute
#[1] 18 56 150 1082
我有一个变量指示事件发生后的时间,它的编码如下:
time_since_event <- c("18 m", "56 m", "2 h 30 m", "18 h 2 m")
我希望它是数字并始终指示事件发生后的分钟数:
time_since_event_min <- c(18,56,150,1082)
你可以使用 strsplit
:
time_since_event <- c("18 m", "56 m", "2 h 30 m", "18 h 2 m")
sapply(strsplit(time_since_event, "\D+"),
function(x) {
x <- as.numeric(x);
if(length(x) == 2) return(60 * x[1] + x[2]) else return(x)
})
#> [1] 18 56 150 1082
您可以使用 lubridate
函数:
library(lubridate)
(time_since_event %>% toupper %>% period %>% period_to_seconds())/60
#[1] 18 56 150 1082
我们可以提取成分并得到总和
library(lubridate)
v1 <- as.period(toupper(time_since_event))
v1@hour * 60 + v1@minute
#[1] 18 56 150 1082