Мне удалось найти пакет lutz
, когда я увидел этот вопрос.Похоже, этот пакет работает для OP.Я думал, что было бы хорошо оставить здесь записку.В пакете есть функция с именем tz_lookup_coords()
.С помощью этой функции вы можете настроить метод двумя способами.Один - method = "fast"
, а другой - method = "accurate"
.Если вы хотите скорость, выберите первый вариант.Если вы хотите точности, выберите второй вариант.Я оставляю следующий результат.Вы видите огромную разницу во времени.
library(lutz)
set.seed(111)
data <- data.table(latitude=sample(seq(47,52,by=0.001), 1000000, replace = TRUE),
longitude=sample(seq(8,23,by=0.001), 1000000, replace = TRUE))
system.time(data[, timezone := tz_lookup_coords(lat = latitude, lon = longitude, method = "fast")])
#user system elapsed
#6.46 3.42 9.92
#Warning message:
#Using 'fast' method. This can cause inaccuracies in timezones
#near boundaries away from populated ares. Use the 'accurate'
#method if accuracy is more important than speed.
system.time(data[, timezone := tz_lookup_coords(lat = latitude, lon = longitude, method = "accurate")])
# user system elapsed
#154.44 0.18 154.93