R - Получите переход на летнее и зимнее время с начала года - PullRequest
1 голос
/ 01 мая 2020

Мой вопрос довольно прост, но я так и не нашел ответа на него.

Я хочу написать такую ​​функцию:

get_dst <- function(y = 2019){

}

y - это год ввода функции

вывод должен быть списком или вектором даты и времени, которые представляют начало и конец европейского летнего времени.

Для 2019 года результат будет:

31-03-2019 02:00:00, 27-10-2019 03:00:00

для 2020 года результат будет:

29-03-2020 02:00:00, 25-10-2019 03:00:00

Также я думаю, что dplyr должен иметь способ обрабатывать их при группировании по переменной, являющейся datetime, потому что с ними трудно работать.

1 Ответ

1 голос
/ 01 мая 2020

Внутри функции мы можем создать последовательность и применить dst, чтобы вернуть TRUE / FALSE, подмножество и получить range

get_dst <- function(y = 2019, tz){
         start <- paste0(y, '-01-01')
         end <- paste0(y, '-12-31')
         d1 <- seq(as.POSIXct(start, tz = tz),
              as.POSIXct(end, tz =tz), by = 'hour')
         range(d1[lubridate::dst(d1)])
  }

get_dst(2019,  "America/New_York")
...