R:使用输出到新列标识特定的重复条目和地理编码

时间:2014-11-15 22:48:30

标签: r output geocode ggmap

这是我想要做的事情(我想知道是否有可能做到这一点)

我有8000个带地址的条目(其中很多都是重复的,因为数据包含犯罪数据)

我想使用geocode说'800 Beatty st'重复300次,经度和纬度输出到新列。

我知道如何对1个特定位置进行地理编码,但不知道如何将其输出到新列中。 另外,考虑到数据的大小,我不能一次对1个位置进行地理编码。

x <-c("800 BEATTY ST, VANCOUVER BC","800 BEATTY ST, VANCOUVER BC",
      "800 BEATTY ST, VANCOUVER BC","2900 PRINCE EDWARD ST, VANCOUVER BC",
      "2900 PRINCE EDWARD ST, VANCOUVER BC","2900 PRINCE EDWARD ST, VANCOUVER BC",
      "3600 KINGSWAY AVE, VANCOUVER BC")

需要(ggmap)

  

geocode('800 BEATTY ST,VANCOUVER BC')   来自网址的信息:http://maps.googleapis.com/maps/api/geocode/json?address=800+BEATTY+ST,+VANCOUVER+BC&sensor=false   Google Maps API服务条款:http://developers.google.com/maps/terms           Lon lat   1 -123.1139 49.27763

1 个答案:

答案 0 :(得分:0)

我想你可能在想这里有点太难了。如果您必须多次重复相同的地址,您可以考虑如何创建矢量。例如,您可以执行x <- rep(c("800 BEATTY ST, VANCOUVER BC", "2900 PRINCE EDWARD ST, VANCOUVER BC"), each = 5)之类的操作。如果您运行geocode(x),则会在输出中看到每个地址的五个条目。

x <- rep(c("800 BEATTY ST, VANCOUVER BC", "2900 PRINCE EDWARD ST, VANCOUVER BC",
           "3600 KINGSWAY AVE, VANCOUVER BC"), times = c(3, 3, 1))

library(ggmap)
foo <- geocode(x)
foo2 <- cbind(foo, x)

#        lon      lat                                   x
#1 -123.1139 49.27763         800 BEATTY ST, VANCOUVER BC
#2 -123.1139 49.27763         800 BEATTY ST, VANCOUVER BC
#3 -123.1139 49.27763         800 BEATTY ST, VANCOUVER BC
#4 -123.0963 49.25880 2900 PRINCE EDWARD ST, VANCOUVER BC
#5 -123.0963 49.25880 2900 PRINCE EDWARD ST, VANCOUVER BC
#6 -123.0963 49.25880 2900 PRINCE EDWARD ST, VANCOUVER BC
#7 -122.7899 49.26511     3600 KINGSWAY AVE, VANCOUVER BC