将 "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