2017-02-20 45 views
0

Я дал один данные, как это:Нахождение всех комбинаций спичечных мест с Google геолокации Апи

> head(base_1[,c("logradouro","nomemun_x")]) 
       logradouro  nomemun_x 
1  RODOVIA BR-419 KM 236 Anastácio 
2  RUA CASTRO ALVES, 1130 São Marcos 
3 CONEGO JOAO MARCHESI, 526 São Marcos 
4 RUA BONFILHO NICOLETTI, 670 São Marcos 
5   VENANCIO AIRES, 444 São Marcos 
6   OSVALDO ARANHA, 478 São Marcos 

и я получаю код Найти координаты широта/долгота:

geocodeAdddress <- function(address) { 
    require(RJSONIO) 
    url <- "http://maps.google.com/maps/api/geocode/json?address=" 
    url <- URLencode(paste(url, address, "&sensor=false", sep = "")) 
    x <- fromJSON(url, simplify = FALSE) 
    if (x$status == "OK") { 
      latitude <- x$results[[1]]$geometry$location$lat 
      longitude <- x$results[[1]]$geometry$location$lng 
      localizacao_tipo <- x$results[[1]]$geometry$location_type 
      formatacao_endereco <- x$results[[1]]$formatted_address 
      out<-cbind(longitude,latitude,localizacao_tipo,formatacao_endereco) 
    } else { 
      out <- NA 
    } 
    Sys.sleep(0.2) # API only allows 5 requests per second 
    out 
} 

Теперь о покупке программу Сделать все возможные комбинации с переменной logradouro и nomemun_x, чтобы найти координаты, которые я хочу.

+0

использовать 'expand.grid()' –

+0

работу с expand.grid() спасибо, но теперь у меня есть такие комбинации, как: –

+0

«1130 RUA 1130, São Marcos-RS, 95190000», и я хочу исключить одни и те же слова или цифры. –

ответ

0

Попробуйте это:

df 
#          logradouro nomemun_x 
#1     1  RODOVIA BR-419 KM 236 Anastácio 
#2     2  RUA CASTRO ALVES, 1130 São Marcos 
#3     3 CONEGO JOAO MARCHESI, 526 São Marcos 
#4     4 RUA BONFILHO NICOLETTI, 670 São Marcos 
#5     5   VENANCIO AIRES, 444 São Marcos 
#6     6   OSVALDO ARANHA, 478 São Marcos 

out <- df[as.matrix(expand.grid(1:nrow(df), 1:nrow(df))),] 
head(out, 10) 
#           logradouro nomemun_x 
#1      1  RODOVIA BR-419 KM 236 Anastácio 
#2      2  RUA CASTRO ALVES, 1130 São Marcos 
#3      3 CONEGO JOAO MARCHESI, 526 São Marcos 
#4      4 RUA BONFILHO NICOLETTI, 670 São Marcos 
#5      5   VENANCIO AIRES, 444 São Marcos 
#6      6   OSVALDO ARANHA, 478 São Marcos 
#1.1     1  RODOVIA BR-419 KM 236 Anastácio 
#2.1     2  RUA CASTRO ALVES, 1130 São Marcos 
#3.1     3 CONEGO JOAO MARCHESI, 526 São Marcos 
#4.1     4 RUA BONFILHO NICOLETTI, 670 São Marcos 

или с cartesian product:

out <- merge(df, df, by=NULL)[1:2] 
head(out, 10) 
#          logradouro.x nomemun_x.x 
#1     1  RODOVIA BR-419 KM 236 Anastácio 
#2     2  RUA CASTRO ALVES, 1130 São Marcos 
#3     3 CONEGO JOAO MARCHESI, 526 São Marcos  
#4     4 RUA BONFILHO NICOLETTI, 670 São Marcos 
#5     5   VENANCIO AIRES, 444 São Marcos 
#6     6   OSVALDO ARANHA, 478 São Marcos 
#7     1  RODOVIA BR-419 KM 236 Anastácio 
#8     2  RUA CASTRO ALVES, 1130 São Marcos 
#9     3 CONEGO JOAO MARCHESI, 526 São Marcos 
#10     4 RUA BONFILHO NICOLETTI, 670 São Marcos 
+0

, чтобы избавиться от строк с одинаковыми значениями в столбце 'logradouro.x, nomemun_x.x' фильтра с' out <- out [out [, 1]! = Out [, 2] ,] ' –