Как преобразовать временной интервал, сохраненный как целое число, в объект даты в R? - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть набор данных с целочисленной переменной, которая обозначает наблюдения, выполненные с 5-минутными интервалами в течение всего дня, но когда он составляет 55, он увеличивает час. поэтому после «55» - «100», затем «105» ... и после «955» - «1000». По сути это 24-часовые часы в формате чч: мм, но в них отсутствуют предшествующие нули. Мне нужно преобразовать их во временные объекты, но я не нашел простой функции в пакете lubridate.

Моим последним средством было бы преобразовать эту переменную в строку, использовать циклы if, чтобы вставить 3, 2 или 1 ноль в каждую, чтобы я мог вызвать parse_date_time (data $ interval, "H! М! ») Но мне интересно, есть ли более элегантное решение, о котором я не знаю?

1 Ответ

0 голосов
/ 04 ноября 2019

Используйте sprintf, чтобы преобразовать целое число в строку фиксированной ширины, а затем преобразовать его в объект времени.

x <- c(50, 55, 100, 105, 955, 1000)
as.POSIXct(sprintf("%04d", x), format = "%H%M", tz = "UTC")

#[1] "2019-11-04 00:50:00 UTC" "2019-11-04 00:55:00 UTC" "2019-11-04 01:00:00 UTC"
#[4] "2019-11-04 01:05:00 UTC" "2019-11-04 09:55:00 UTC" "2019-11-04 10:00:00 UTC"

Аналогичные результаты также могут быть достигнуты с stringr::str_pad и strptime

strptime(stringr::str_pad(x, 4, pad = 0), format = "%H%M", tz = "UTC")

Или используя parse_date_time

lubridate::parse_date_time(sprintf("%04d", x), "HM")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...