Рассчитать строку символов «дни, часы, минуты, секунды» до общего числа дней [дубликаты]

На этот вопрос уже есть ответ:

R извлекает компоненты времени из полустандартных строк 2 ответа

Я видел много вопросов, касающихся времени форматирования, но ни одного в конкретном импортированном формате, который у меня есть:

Time <- c(
"22 hours 3 minutes 22 seconds", 
"170 hours 15 minutes 20 seconds", 
"39 seconds", 
"2 days 6 hours 44 minutes 17 seconds", 
"9 hours 54 minutes 36 seconds", 
"357 hours 23 minutes 28 seconds", 
"464 hours 30 minutes 7 seconds", 
"51 seconds", 
"31 hours 39 minutes 2 seconds", 
"355 hours 29 minutes 10 seconds")

Некоторые времена содержат только «секунды», а другие «минуты и секунды», «дни, часы, минуты и секунды», «дни и секунды» и т. Д. Есть также значения NA, которые мне нужно сохранить. Как я могу получить этот символьный вектор для вычисления (то есть, добавить дни, часы, минуты, секунды) числового общего количества дней?

Например

Time
8.10
19.3
0.68
2.28
48.1
0.00
0.70
0.1
3.2
13.9

Спасибо

РЕДАКТИРОВАТ

Старый вопрос, но простойlubridate Call делает свое дело сейчас:

(period_to_seconds(period(time)) / 86400) %>% round(2)

Это также помогает без пакетов, кроме необходимости%>% для удобства чтения:

Time_vec <- mapply(function(tt, to_days) {
  ifelse(grepl(tt, Time), gsub(paste0("^.*?(\\d+) ", tt, ".*$"), "\\1", Time), 0) %>%
    as.numeric() / to_days
    },
  c("day", "hour", "minute", "second"),
  c(1, 24, 1440, 86400)
) %>%
  apply(1, sum) %>% 
  round(2)

В моих реальных данных только одно значение отличалось отlubridate решение,0.96 против0.97.

Ответы на вопрос(4)

Ваш ответ на вопрос