enderecobr é um pacote de R que permite padronizar endereços brasileiros a partir de diferentes critérios. Os métodos de padronização atualmente incluem apenas manipulações de strings, não oferecendo suporte a correspondências probabilísticas entre strings.
Instalação
A última versão estável pode ser baixada do CRAN com o comando a seguir:
install.packages("enderecobr")
Caso prefira, a versão em desenvolvimento também pode ser usada. Para isso, use o seguinte comando:
# install.packages("remotes")
remotes::install_github("ipeaGIT/enderecobr")
Utilização
Esta seção visa oferecer apenas uma visão geral das funcionalidades do pacote. Para mais detalhes, leia a vignette introdutória:
O enderecobr disponibiliza funções para padronizar diferentes campos de um endereço. A padronizar_enderecos()
, carro-chefe do pacote, atua de forma simultânea sobre os vários campos que podem compor um endereço. Para isso, ela recebe um dataframe e a correspondência entre suas colunas e os campos a serem padronizados:
library(enderecobr)
enderecos <- data.frame(
logradouro = "r ns sra da piedade",
nroLogradouro = 20,
complemento = "qd 20",
cep = 25220020,
bairro = "jd botanico",
codmun_dom = 3304557,
uf_dom = "rj"
)
campos <- correspondencia_campos(
logradouro = "logradouro",
numero = "nroLogradouro",
complemento = "complemento",
cep = "cep",
bairro = "bairro",
municipio = "codmun_dom",
estado = "uf_dom"
)
padronizar_enderecos(enderecos, campos_do_endereco = campos)
#> logradouro nroLogradouro complemento cep bairro
#> <char> <num> <char> <num> <char>
#> 1: r ns sra da piedade 20 qd 20 25220020 jd botanico
#> codmun_dom uf_dom logradouro_padr numero_padr complemento_padr
#> <num> <char> <char> <char> <char>
#> 1: 3304557 rj RUA NOSSA SENHORA DA PIEDADE 20 QUADRA 20
#> cep_padr bairro_padr municipio_padr estado_padr
#> <char> <char> <char> <char>
#> 1: 25220-020 JARDIM BOTANICO RIO DE JANEIRO RIO DE JANEIRO
Por trás dos panos, essa função utiliza diversas outras funções que padronizam campos de forma individual. Cada uma delas recebe um vetor com valores não padronizados e retorna um vetor de mesmo tamanho com os respectivos valores padronizados. Algumas das funções disponíveis são apresentadas a seguir:
estados <- c("21", " 21", "MA", " MA ", "ma", "MARANHÃO")
padronizar_estados(estados)
#> [1] "MARANHAO" "MARANHAO" "MARANHAO" "MARANHAO" "MARANHAO" "MARANHAO"
municipios <- c(
"3304557", "003304557", " 3304557 ", "RIO DE JANEIRO", "rio de janeiro",
"SÃO PAULO"
)
padronizar_municipios(municipios)
#> [1] "RIO DE JANEIRO" "RIO DE JANEIRO" "RIO DE JANEIRO" "RIO DE JANEIRO"
#> [5] "RIO DE JANEIRO" "SAO PAULO"
bairros <- c(
"PRQ IND",
"NSA SEN DE FATIMA",
"ILHA DO GOV",
"VL OLIMPICA",
"NUC RES"
)
padronizar_bairros(bairros)
#> [1] "PARQUE INDUSTRIAL" "NOSSA SENHORA DE FATIMA"
#> [3] "ILHA DO GOVERNADOR" "VILA OLIMPICA"
#> [5] "NUCLEO RESIDENCIAL"
ceps <- c("22290-140", "22.290-140", "22290 140", "22290140")
padronizar_ceps(ceps)
#> [1] "22290-140" "22290-140" "22290-140" "22290-140"
logradouros <- c(
"r. gen.. glicério, 137",
"cond pres j. k., qd 05 lt 02 1",
"av d pedro I, 020"
)
padronizar_logradouros(logradouros)
#> [1] "RUA GENERAL GLICERIO, 137"
#> [2] "CONDOMINIO PRESIDENTE JUSCELINO KUBITSCHEK, QUADRA 5 LOTE 2 1"
#> [3] "AVENIDA DOM PEDRO I, 20"
numeros <- c("0210", "001", "1", "", "S N", "S/N", "SN", "0180 0181")
padronizar_numeros(numeros)
#> [1] "210" "1" "1" "S/N" "S/N" "S/N" "S/N"
#> [8] "180 181"
Controle de verbosidade
O disparo de mensagens com informações sobre a execução das funções pode ser controlado pela opção enderecobr.verbose
, que recebe os valores "quiet"
ou "verbose"
, como demonstrado a seguir:
campos <- correspondencia_logradouro(
nome_do_logradouro = "logradouro",
numero = "nroLogradouro"
)
# quieto, por padrão
res <- padronizar_logradouros_completos(enderecos, campos)
# verboso, se desejado
rlang::local_options("enderecobr.verbose" = "verbose")
res <- padronizar_logradouros_completos(enderecos, campos)
#> ✔ Padronizando nomes dos logradouros... [130ms]
#> ✔ Padronizando números... [111ms]
#> ✔ Trazendo números para o logradouro completo... [107ms]