Конвертировать секунды в дни: часы: минуты: секунды Я хочу преобразовать секунды в часах минут и секунд в R. Пример 86400seconds-1day gmdate("d H:i:s",86400) Вот как я пытался. Ответ 1 Вы можете попробовать library(lubridate) seconds_to_period(86400) #[1] "1d 0H 0M 0S" seconds_to_period(48000) #[1] "13H 20M 0S" Если вам нужно format td <- seconds_to_period(86400) sprintf('%02d %02d:%02d:%02d', day(td), [email protected], minute(td), second(td)) #[1] "01 00:00:00" Если он охватывает >99 дней, td <- seconds_to_period(1e7) sprintf('%03d %02d:%02d:%02d', day(td), [email protected], minute(td), second(td)) #[1] "115 17:46:40" Ответ 2 Это также работает с использованием seconds.to.hms от kimisc, хотя и не столь изящным, как ответ @akrun: library(kimisc) library(dplyr) library(stringr) HMS = seconds.to.hms(86400) HMS = seconds.to.hms(48000) HMS = seconds.to.hms(1e7) HMS %>% str_extract("^\\d+") %>% as.numeric() %>% {paste(.%/%24, .%%24)} %>% str_replace(HMS, "^\\d+", .) Результат: [1] "1 0:00:00" [1] "0 13:20:00" [1] "115 17:46:40"
Ответ 1 Вы можете попробовать library(lubridate) seconds_to_period(86400) #[1] "1d 0H 0M 0S" seconds_to_period(48000) #[1] "13H 20M 0S" Если вам нужно format td <- seconds_to_period(86400) sprintf('%02d %02d:%02d:%02d', day(td), [email protected], minute(td), second(td)) #[1] "01 00:00:00" Если он охватывает >99 дней, td <- seconds_to_period(1e7) sprintf('%03d %02d:%02d:%02d', day(td), [email protected], minute(td), second(td)) #[1] "115 17:46:40"
Ответ 2 Это также работает с использованием seconds.to.hms от kimisc, хотя и не столь изящным, как ответ @akrun: library(kimisc) library(dplyr) library(stringr) HMS = seconds.to.hms(86400) HMS = seconds.to.hms(48000) HMS = seconds.to.hms(1e7) HMS %>% str_extract("^\\d+") %>% as.numeric() %>% {paste(.%/%24, .%%24)} %>% str_replace(HMS, "^\\d+", .) Результат: [1] "1 0:00:00" [1] "0 13:20:00" [1] "115 17:46:40"