代码之家  ›  专栏  ›  技术社区  ›  cheesetaco

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

  •  3
  • cheesetaco  · 技术社区  · 8 年前

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

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

    编辑以解决潜在的重复问题:我想这样做 使用ggmap包,因为我有太多的行,并且它们每天最多有#个请求。

    1 回复  |  直到 8 年前
        1
  •  5
  •   G5W    8 年前

    你至少可以从 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
    

    注:
    警告:

    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 只是给出清单上的第一个。您可能需要使用更多信息,而不仅仅是名称,以获得良好的结果。