很抱歉,如果这是重复的,但我已经到处寻找,似乎无法找到解决我在R中遇到的具体问题的任何内容。我有一个包含城市名称的专栏:
cities <-data.frame(c("Sydney", "Dusseldorf", "LidCombe", "Portland"))
colnames(cities)[1]<-"CityName"
理想情况下,我想为每个城市或时区添加一个带有纬度/经度的列。我尝试过使用&#34; ggmap&#34; R中的包,但我的请求超过了他们每天允许的最大请求数。我找到了#34; geonames&#34;将lat / long转换为时区的包,所以如果我得到了城市的纬度/经度,我应该可以从那里拿走它。
编辑以解决潜在的重复问题:我想在没有的情况下使用ggmap包执行此操作,因为我有太多行,并且每天有最多的请求数。
答案 0 :(得分:3)
您可以从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
注意:未包括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
只是列出了第一个。您可能需要使用更多信息而不仅仅是名称才能获得良好的结果。