#r #timestamp #lubridate
Вопрос:
Я пытаюсь установить непрерывные метки времени на «каждые x часов» с lubridate:floor_date
помощью . Однако, когда мой временной интервал превышает час первой метки времени, он уменьшается относительно полуночи вместо моей первой метки времени. Я не нашел способа установить контрольную метку времени для моего времени начала. У меня есть метки времени в UTC, но мне нужно указать их относительно, например, 6:00 и 18:00 по местному времени, что будет составлять 12-часовые интервалы, если ссылаться на местную полночь, но не работает для времени UTC, когда оно продолжает ссылаться на (UTC) полночь.
Я знаю, что мог бы преобразовать свои метки времени в местное время, но это далеко не идеально. Есть ли способ определить контрольные метки времени для floor_date
того, что мне не хватает?
В принципе, то, что я хотел бы сделать, — это разместить метки времени «каждый час» относительно начала моих временных рядов, а не каждую метку времени отдельно относительно ее полуночи.
timestampslt;-structure(c(1578628800, 1578632400, 1578636000, 1578639600, 1578643200, 1578646800, 1578650400, 1578654000, 1578657600, 1578661200), class = c("POSIXct", "POSIXt"), tzone = "UTC") floor_date(timestamps, '4 hours') [1] "2020-01-10 04:00:00 UTC" "2020-01-10 04:00:00 UTC" "2020-01-10 04:00:00 UTC" [4] "2020-01-10 04:00:00 UTC" "2020-01-10 08:00:00 UTC" "2020-01-10 08:00:00 UTC" [7] "2020-01-10 08:00:00 UTC" "2020-01-10 08:00:00 UTC" "2020-01-10 12:00:00 UTC" [10] "2020-01-10 12:00:00 UTC" floor_date(timestamps, '5 hours') [1] "2020-01-10 00:00:00 UTC" "2020-01-10 05:00:00 UTC" "2020-01-10 05:00:00 UTC" [4] "2020-01-10 05:00:00 UTC" "2020-01-10 05:00:00 UTC" "2020-01-10 05:00:00 UTC" [7] "2020-01-10 10:00:00 UTC" "2020-01-10 10:00:00 UTC" "2020-01-10 10:00:00 UTC" [10] "2020-01-10 10:00:00 UTC"
Ответ №1:
Попробуйте clock
упаковку:
clock::date_floor(timestamps, 'hour', n = 4) [1] "2020-01-10 04:00:00 UTC" "2020-01-10 04:00:00 UTC" [3] "2020-01-10 04:00:00 UTC" "2020-01-10 04:00:00 UTC" [5] "2020-01-10 08:00:00 UTC" "2020-01-10 08:00:00 UTC" [7] "2020-01-10 08:00:00 UTC" "2020-01-10 08:00:00 UTC" [9] "2020-01-10 12:00:00 UTC" "2020-01-10 12:00:00 UTC" clock::date_floor(timestamps, 'hour', n = 5) [1] "2020-01-10 01:00:00 UTC" "2020-01-10 01:00:00 UTC" [3] "2020-01-10 06:00:00 UTC" "2020-01-10 06:00:00 UTC" [5] "2020-01-10 06:00:00 UTC" "2020-01-10 06:00:00 UTC" [7] "2020-01-10 06:00:00 UTC" "2020-01-10 11:00:00 UTC" [9] "2020-01-10 11:00:00 UTC" "2020-01-10 11:00:00 UTC"