У меня есть некоторые данные с датой, временем и часовым поясом в виде символьного вектора:
times <- c("2020:03:04 13:31:45+11:00", "2020:03:06 13:28:45+11:00")
Я хочу преобразовать их в вектор объектов POSIXct без необходимости ввода вручную часовой пояс. Если я использую lubridate для создания POSIXct, они преобразуются в UT C, что означает, что у меня неправильное время:
library(lubridate)
ymd_hms(times)
[1] "2020-03-04 02:31:45 UTC" "2020-03-06 02:28:45 UTC"
Это можно исправить, если я использовал tz
ymd_hms(times, tz = 'Australia/Sydney')
[1] "2020-03-04 13:31:45 AEDT" "2020-03-06 13:28:45 AEDT"
gsub(".*[+-]", "", times)
[1] "11:00" "11:00"
Однако, Я хочу автоматизировать процесс для наборов данных с несколькими часовыми поясами, такими как:
times <- c("2020:03:04 13:31:45+11:00", "2020:03:06 13:28:45-06:00")
Моя текущая попытка обойти это попытка извлечь смещение часового пояса и добавить это значение обратно в вектор POSIXct, но у меня нет ' Не удалось получить символ +/- ...:
sub(".*[+-]", "\\1", times)
[1] "11:00" "06:00"