che*_*aco 3 r city latitude-longitude geocode geonames
抱歉,如果这是重复的,但我到处都查过了,似乎找不到任何可以解决我在 R 中的特定问题的内容。我有一个包含城市名称的列:
cities <-data.frame(c("Sydney", "Dusseldorf", "LidCombe", "Portland"))
colnames(cities)[1]<-"CityName"
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想附加一个列,其中包含每个城市或时区的纬度/经度。我尝试过在 R 中使用“ggmap”包,但我的请求超出了他们每天允许的最大请求数。我找到了“geonames”包,可以将纬度/经度转换为时区,所以如果我得到城市的纬度/经度,我应该能够从那里获取它。
编辑以解决潜在的重复问题:我想在不使用 ggmap 包的情况下执行此操作,因为我有太多行,并且它们每天有最大请求数。
world.cities从包里的数据中你至少可以得到很多主要城市maps。
## 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
Run Code Online (Sandbox Code Playgroud)
注意: 不包括 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
Run Code Online (Sandbox Code Playgroud)
当然美国的两个是缅因州波特兰和俄勒冈州波特兰。
match只是给出列表中的第一个。您可能需要使用名称以外的更多信息才能获得良好的结果。