Я пытаюсь преобразовать переменную datetime
из MST в MDT.
Я пытаюсь получить новую переменную datetime
, которая отражает горное летнее время (MDT).
Я не уверен, как начать с этой проблемой.
Я думаю сначала принудительно установить исходную дату-время с часовым поясом MST, а затем преобразовать его в MDT, однако я не знаю, как это сделать.
ОБНОВЛЕНИЕ: ###############
После некоторых копаний я обнаружил, что оригинал datetime
начинается с UTC -07: 00, то есть он не отражает летнее время. Однако нам нужно, чтобы datetime
следовал за переходом на летнее время.
Данные, где легко увидеть изменение времени:
df <- structure(list(datetime.char = c("2019-03-09 21:00", "2019-03-09 21:05",
"2019-03-09 21:10", "2019-03-09 21:15", "2019-03-09 21:20", "2019-03-09 21:25",
"2019-03-09 21:30", "2019-03-09 21:35", "2019-03-09 21:40", "2019-03-09 21:45",
"2019-03-09 21:50", "2019-03-09 21:55", "2019-03-09 22:00", "2019-03-09 22:05",
"2019-03-09 22:10", "2019-03-09 22:15", "2019-03-09 22:20", "2019-03-09 22:25",
"2019-03-09 22:30", "2019-03-09 22:35", "2019-03-09 22:40", "2019-03-09 22:45",
"2019-03-09 22:50", "2019-03-09 22:55", "2019-03-09 23:00", "2019-03-09 23:05",
"2019-03-09 23:10", "2019-03-09 23:15", "2019-03-09 23:20", "2019-03-09 23:25",
"2019-03-09 23:30", "2019-03-09 23:35", "2019-03-09 23:40", "2019-03-09 23:45",
"2019-03-09 23:50", "2019-03-09 23:55", "2019-03-10 00:00", "2019-03-10 00:05",
"2019-03-10 00:10", "2019-03-10 00:15", "2019-03-10 00:20", "2019-03-10 00:25",
"2019-03-10 00:30", "2019-03-10 00:35", "2019-03-10 00:40", "2019-03-10 00:45",
"2019-03-10 00:50", "2019-03-10 00:55", "2019-03-10 01:00", "2019-03-10 01:05",
"2019-03-10 01:10", "2019-03-10 01:15", "2019-03-10 01:20", "2019-03-10 01:25",
"2019-03-10 01:30", "2019-03-10 01:35", "2019-03-10 01:40", "2019-03-10 01:45",
"2019-03-10 01:50", "2019-03-10 01:55", "2019-03-10 02:00", "2019-03-10 02:05",
"2019-03-10 02:10", "2019-03-10 02:15", "2019-03-10 02:20", "2019-03-10 02:25",
"2019-03-10 02:30", "2019-03-10 02:35", "2019-03-10 02:40", "2019-03-10 02:45",
"2019-03-10 02:50", "2019-03-10 02:55", "2019-03-10 03:00", "2019-03-10 03:05",
"2019-03-10 03:10", "2019-03-10 03:15", "2019-03-10 03:20", "2019-03-10 03:25",
"2019-03-10 03:30", "2019-03-10 03:35", "2019-03-10 03:40", "2019-03-10 03:45",
"2019-03-10 03:50", "2019-03-10 03:55", "2019-03-10 04:00")), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -85L), spec = structure(list(
cols = list(datetime.char = structure(list(), class = c("collector_character",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1), class = "col_spec"))
Это скриншот результатов, которые мы достигли с помощью @dbрешение. Однако он точно не обеспечивает ожидаемый результат.
Изменение месяца в ноябре
Этофиктивные данные за ноябрь:
df <- structure(list(datetime.char = c("2017-11-04 21:00:00", "2017-11-04 21:05:00",
"2017-11-04 21:10:00", "2017-11-04 21:15:00", "2017-11-04 21:20:00",
"2017-11-04 21:25:00", "2017-11-04 21:30:00", "2017-11-04 21:35:00",
"2017-11-04 21:40:00", "2017-11-04 21:45:00", "2017-11-04 21:50:00",
"2017-11-04 21:55:00", "2017-11-04 22:00:00", "2017-11-04 22:05:00",
"2017-11-04 22:10:00", "2017-11-04 22:15:00", "2017-11-04 22:20:00",
"2017-11-04 22:25:00", "2017-11-04 22:30:00", "2017-11-04 22:35:00",
"2017-11-04 22:40:00", "2017-11-04 22:45:00", "2017-11-04 22:50:00",
"2017-11-04 22:55:00", "2017-11-04 23:00:00", "2017-11-04 23:05:00",
"2017-11-04 23:10:00", "2017-11-04 23:15:00", "2017-11-04 23:20:00",
"2017-11-04 23:25:00", "2017-11-04 23:30:00", "2017-11-04 23:35:00",
"2017-11-04 23:40:00", "2017-11-04 23:45:00", "2017-11-04 23:50:00",
"2017-11-04 23:55:00", "2017-11-05 00:00:00", "2017-11-05 00:05:00",
"2017-11-05 00:10:00", "2017-11-05 00:15:00", "2017-11-05 00:20:00",
"2017-11-05 00:25:00", "2017-11-05 00:30:00", "2017-11-05 00:35:00",
"2017-11-05 00:40:00", "2017-11-05 00:45:00", "2017-11-05 00:50:00",
"2017-11-05 00:55:00", "2017-11-05 01:00:00", "2017-11-05 01:00:00",
"2017-11-05 01:05:00", "2017-11-05 01:05:00", "2017-11-05 01:10:00",
"2017-11-05 01:10:00", "2017-11-05 01:15:00", "2017-11-05 01:15:00",
"2017-11-05 01:20:00", "2017-11-05 01:20:00", "2017-11-05 01:25:00",
"2017-11-05 01:25:00", "2017-11-05 01:30:00", "2017-11-05 01:30:00",
"2017-11-05 01:35:00", "2017-11-05 01:35:00", "2017-11-05 01:40:00",
"2017-11-05 01:40:00", "2017-11-05 01:45:00", "2017-11-05 01:45:00",
"2017-11-05 01:50:00", "2017-11-05 01:50:00", "2017-11-05 01:55:00",
"2017-11-05 01:55:00", "2017-11-05 02:00:00", "2017-11-05 02:05:00",
"2017-11-05 02:10:00", "2017-11-05 02:15:00", "2017-11-05 02:20:00",
"2017-11-05 02:25:00", "2017-11-05 02:30:00", "2017-11-05 02:35:00",
"2017-11-05 02:40:00", "2017-11-05 02:45:00", "2017-11-05 02:50:00",
"2017-11-05 02:55:00", "2017-11-05 03:00:00", "2017-11-05 03:05:00",
"2017-11-05 03:10:00", "2017-11-05 03:15:00", "2017-11-05 03:20:00",
"2017-11-05 03:25:00", "2017-11-05 03:30:00", "2017-11-05 03:35:00",
"2017-11-05 03:40:00", "2017-11-05 03:45:00", "2017-11-05 03:50:00",
"2017-11-05 03:55:00", "2017-11-05 04:00:00")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-97L))
Интересно, что когда я делаю мартовское преобразование, появляется отчет о том, что 12 записей не удалось разобрать.
df <- df %>%
mutate(datetime = ymd_hms(df$datetime.char, tz = "MST7MDT"))
И в конечном результате, если я распечатаю df $ date (см. Код @db в комментариях), вывод сохраняет MST / MDT tz и становится видимым при переключении:
[55] "2019-03-10 01:30:00 MST" "2019-03-10 01:35:00 MST" "2019-03-10 01:40:00 MST" "2019-03-10 01:45:00 MST" "2019-03-10 01:50:00 MST" "2019-03-10 01:55:00 MST"
[61] "2019-03-10 03:00:00 MDT" "2019-03-10 03:05:00 MDT" "2019-03-10 03:10:00 MDT" "2019-03-10 03:15:00 MDT" "2019-03-10 03:20:00 MDT" "2019-03-10 03:25:00 MDT"
Это не похоже наприменить с конверсией в ноябре