我有一个数据框,其中包含一列国家/地区列表,我希望获得该国家/地区的大陆名称,纬度和经度。
例如,
df <- data.frame(CountryName = c("Austria", "Czech Republic", "Finland"))
我希望获得一个具有大陆,纬度和经度的数据框。
library(countrycode)
library(geocode)
df$continent <- as.factor(countrycode(sourcevar = df[, "CountryName"], origin = "country.name", destination = "continent"))
所以,我现在已经在我的数据框中使用了Continent。
geocode("Austria")
在R中返回lat和long
你能指导我在Dataframe中获取它吗?
感谢。
答案 0 :(得分:1)
原则上,您可以同时为所有国家/地区geocode()
(我不知道包ggmap
)致电geocode
并使用cbind
这样的内容:
cbind(df, ggmap::geocode(as.character(df[, "CountryName"]), force = FALSE))
# Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=Austria&sensor=false
# Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=Czech%20Republic&sensor=false
# Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=Finland&sensor=false
# CountryName continent lon lat
# 1 Austria Europe 14.55007 47.51623
# 2 Czech Republic Europe 15.47296 49.81749
# 3 Finland Europe 25.74815 61.92411
然而,人们经常会收到有关OVER_QUERY_LIMIT的警告消息。为了解决这个问题,可能需要一个API密钥,c.f。 Getting OVER QUERY LIMIT after one request with geocode
答案 1 :(得分:0)
通过注册您自己的Google API密钥来解决“OVER QUERY LIMIT”问题:Google API sign-up
请参阅相关的堆栈溢出问题:stackoverflow.com/questions/36175529