Найти, где вектор временной метки меняет часовые пояса - PullRequest
1 голос
/ 12 марта 2019

Как найти элемент в векторе метки времени, где он переключается на другой часовой пояс из-за изменения времени?

Пример данных:

ts <- structure(c(1521921600, 1521925200, 1521928800, 1521932400, 1521936000, 
                              1521939600, 1521943200, 1521946800, 1521950400, 1521954000, 1521957600
            ), class = c("POSIXct", "POSIXt"))

Выход:

"2018-03-24 21:00:00 CET"  "2018-03-24 22:00:00 CET"  "2018-03-24 23:00:00 CET"  "2018-03-25 00:00:00 CET"  "2018-03-25 01:00:00 CET"  "2018-03-25 03:00:00 CEST" "2018-03-25 04:00:00 CEST" "2018-03-25 05:00:00 CEST" "2018-03-25 06:00:00 CEST" "2018-03-25 07:00:00 CEST" "2018-03-25 08:00:00 CEST"

Первые 5 элементов находятся в CET , а затем переключаются на CEST .Таким образом, ответ здесь будет 5 или 6. Оба ответа будут хорошими.

В примерах данных разница всегда составляет 1 час, но она мне также нужна для разных интервалов времени, например, 15 или 30 минут.

seq(min(ts), to = max(ts), by = 15*60)
seq(min(ts), to = max(ts), by = 30*60)

Ожидаемый ответ в течение 15 минут будет 20 / 21.
Ожидаемый ответ в течение 30 минут будет 10 / 11.

1 Ответ

2 голосов
/ 12 марта 2019

Вы можете использовать lubridate dst:

which(!duplicated(dst(ts)))[2]

Это даст вам точку, где часовой пояс изменится на летнее время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...