Преобразовать формат времени с «х часов у минут» в числовой - PullRequest
2 голосов
/ 01 мая 2020

У меня есть переменная, указывающая время с момента события, и она закодирована так:

time_since_event <- c("18 m", "56 m", "2 h 30 m", "18 h 2 m")

Я хочу, чтобы она была цифрой c и всегда указывала количество минут с момента события:

time_since_event_min <- c(18,56,150,1082)

Ответы [ 3 ]

5 голосов
/ 01 мая 2020

Вы можете использовать lubridate функции:

library(lubridate)
(time_since_event %>% toupper %>% period %>% period_to_seconds())/60
#[1]   18   56  150 1082
3 голосов
/ 01 мая 2020

Вы можете использовать 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
1 голос
/ 01 мая 2020

Мы могли бы извлечь компоненты и получить сумму

library(lubridate)
v1 <- as.period(toupper(time_since_event))
v1@hour * 60 + v1@minute
#[1]   18   56  150 1082
...