Установка часового пояса в запросах weatherData

Я использую weatherData пакет, в частности, его getDetailedWeather функция. Возвращает фрейм данных, один из компонентов фрейма данных Timeиз класса POSIXct, Моя проблема в том, что все Time устанавливается местный часовой пояс машины, которую я использую. Я почти уверен, что это неверно, что данные отражают местное время, и единственное, что API делает, это добавляет часовой пояс к данным, не меняя его. Я прав? Как я могу сказать API прекратить использовать мой часовой пояс по умолчанию?

Например:

library(weatherData)
dat <- getDetailedWeather("NRT", "2014-04-29")
dat$Time
# [1] "2014-04-29 00:00:00 EST"  ## local timezone, not of the weather station

1 ответ

Решение

Глядя на результаты примера в ?getDetailedWeather:

library(weatherData)
dat <- getDetailedWeather("NRT", "2014-04-29")
dat$Time
# [1] "2014-04-29 00:00:00 EST" "2014-04-29 00:30:00 EST" "2014-04-29 01:00:00 EST" etc

Возвращенные времена кажутся "правильными" в том смысле, что они идут с 00:00 до 23:30. Часовой пояс для данных - это не метеостанция, а скорее компьютерная система. Возможно, вам лучше всего изменить эти выходные данные, как только они у вас есть, так как R всегда будет отображать дату / время POSIXct объекты в местном часовом поясе по умолчанию, например:

as.POSIXct(as.character(dat$Time),tz="UTC")
# [1] "2014-04-29 00:00:00 UTC" "2014-04-29 00:30:00 UTC" "2014-04-29 01:00:00 UTC" etc

Вышеизложенное меняет часовой пояс на новый часовой пояс (в этом случае "UTC", но вы можете использовать один, подходящий для местоположения метеостанции), не влияя на данные времени суток. Смотрите здесь: Действительные часовые пояса в lubridate для определения местных кодов часовых поясов.

Другие вопросы по тегам