r - 如何将城市名称转换为时区?

标签 r latitude-longitude geocode geonames city

抱歉,如果这是重复的,但我到处都看过,似乎找不到任何解决我在 R 中的特定问题的东西。我有一个包含城市名称的列:

cities <-data.frame(c("Sydney", "Dusseldorf", "LidCombe", "Portland"))
colnames(cities)[1]<-"CityName"  

理想情况下,我想附上一个列,其中包含每个城市或时区的纬度/经度。我曾尝试在 R 中使用“ggmap”包,但我的请求超过了他们每天允许的最大请求数。我找到了将纬度/经度转换为时区的“geonames”包,所以如果我得到城市的纬度/经度,我应该能够从那里获取它。

编辑以解决潜在的重复问题:我想使用 ggmap 包来执行此操作,因为我有太多行并且它们每天有最大请求数。

最佳答案

你可以从maps包中的world.cities数据中得到至少多个主要城市。

## Changing your data to a vector
cities <- c("Sydney", "Dusseldorf", "LidCombe", "Portland")

## Load up data
library(maps)
data(world.cities)

world.cities[match(cities, world.cities$name), ]
            name country.etc     pop    lat   long capital
36817     Sydney   Australia 4444513 -33.87 151.21       0
10026 Dusseldorf     Germany  573521  51.24   6.79       0
NA          <NA>        <NA>      NA     NA     NA      NA
29625   Portland   Australia    8757 -38.34 141.59       0

注意:不包括 LidCombe。
警告:对于许多名字来说,世界城市不止一个。例如,

world.cities[grep("Portland", world.cities$name), ]
          name country.etc    pop    lat    long capital
29625 Portland   Australia   8757 -38.34  141.59       0
29626 Portland         USA 542751  45.54 -122.66       0
29627 Portland         USA  62882  43.66  -70.28       0

当然美国的两个是缅因州波特兰和俄勒冈州波特兰。 match 只是给出列表中的第一个。您可能需要使用比名称更多的信息才能获得良好的结果。

关于r - 如何将城市名称转换为时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46135055/

相关文章:

javascript google maps Geocoder 调用函数在被调用函数之前结束

r - 用于 bool 值的 as.integer() 和 +0L 之间有什么区别?

r - Map Reduce base R 中的线性回归

python - 如何找到某个位置距路线的最短距离(Python),

gis - 有没有办法将 map 划分为方形网格并从那里检索纬度/经度信息?

android - 如何在Google Maps Android上 “increase” VisibleRegion的大小

ruby-on-rails - Geocoding API 的响应不是有效的 JSON。和 request.location = nil

r - 离线 OSM 和 R

r - 多个时间点分组受试者的百分比变化 R

r - ggplot2如何在geom_bar图中创建与分位数相对应的垂直线