diff --git a/R/padronizar_logradouro.R b/R/padronizar_logradouro.R index 1ee7114..8d29476 100644 --- a/R/padronizar_logradouro.R +++ b/R/padronizar_logradouro.R @@ -19,8 +19,8 @@ #' 4. adição de espaços após abreviações sinalizadas por pontos. #' #' @examples -#' bairros <- c("PRQ IND", "NSA SEN DE FATIMA", "ILHA DO GOV") -#' padronizar_bairros(bairros) +#' logradouros <- c("r. gen.. glicério") +#' padronizar_logradouros(logradouros) #' #' @export padronizar_logradouros <- function(logradouros) { @@ -30,7 +30,7 @@ padronizar_logradouros <- function(logradouros) { # identificamos o indice dos logradouros vazios para "reesvazia-los" ao final, # ja que a sequencia de operacoes abaixo acabaria atribuindo um valor a eles - indice_logradouro_vazio <- which(logradouros == "" | is.na(logradouros)) + indice_logradouro_vazio <- which(is.na(logradouros)) logradouros_padrao <- stringr::str_squish(logradouros) logradouros_padrao <- toupper(logradouros_padrao) @@ -100,14 +100,31 @@ padronizar_logradouros <- function(logradouros) { "^(LOCALIDADE|RUA) LOC\\b(\\.|,)?" = "LOCALIDADE", "^LOCALIDADE?\\b(-|,|\\.) *" = "LOCALIDADE ", + "^VL\\b(\\.|,)?" = "VILA", + "^VILA VILA\\b(\\.|,)?" = "VILA", + "^VILA?\\b(-|,|\\.) *" = "VILA ", + "^LAD\\b(\\.|,)?" = "LADEIRA", "^LADEIRA LADEIRA\\b(\\.|,)?" = "LADEIRA", "^LADEIRA?\\b(-|,|\\.) *" = "LADEIRA ", + "^DT\\b(\\.|,)?" = "DISTRITO", + "\\bDISTR?\\b\\.?" = "DISTRITO", + "^DISTRITO DISTRITO\\b(\\.|,)?" = "DISTRITO", + "^DISTRITO?\\b(-|,|\\.) *" = "DISTRITO ", + + "^NUC\\b(\\.|,)?" = "NUCLEO", + "^NUCLEO NUCLEO\\b(\\.|,)?" = "NUCLEO", + "^NUCLEO?\\b(-|,|\\.) *" = "NUCLEO ", + + "^L(RG|GO)\\b(\\.|,)?" = "LARGO", + "^LARGO L(RG|GO)\\b(\\.|,)?" = "LARGO", + "^LARGO?\\b(-|,|\\.) *" = "LARGO ", + # estabelecimentos - "^AER\\b(\\.|,)?" = "AEROPORTO", # sera que vale? tem uns casos estranhos aqui, e.g. "AER GUANANDY, 1", "AER WASHINGTON LUIZ, 3318" + "^AER(OP)?\\b(\\.|,)?" = "AEROPORTO", # sera que vale? tem uns casos estranhos aqui, e.g. "AER GUANANDY, 1", "AER WASHINGTON LUIZ, 3318" "^AEROPORTO (AEROPORTO|AER)\\b(\\.|,)?" = "AEROPORTO", - "^AEROPORTO (INT|INTER)\\b(\\.|,)?" = "AEROPORTO INTERNACIONAL", + "^AEROPORTO INT(ERN?)?\\b(\\.|,)?" = "AEROPORTO INTERNACIONAL", "^COND\\b(\\.|,)?" = "CONDOMINIO", "^(CONDOMINIO|RODOVIA) (CONDOMINIO|COND)\\b(\\.|,)?" = "CONDOMINIO", @@ -147,6 +164,7 @@ padronizar_logradouros <- function(logradouros) { "\\b(PRIMEIRO|PRIM\\.?) TENENTE\\b" = "PRIMEIRO-TENENTE", "\\b(SEGUNDO|SEG\\.?) TENENTE\\b" = "SEGUNDO-TENENTE", "\\bSOLD\\b\\.?" = "SOLDADO", + "\\bMAJ\\b\\.?" = "MAJOR", "\\bPROF\\b\\.?" = "PROFESSOR", "\\bPROFA\\b\\.?" = "PROFESSORA", @@ -163,6 +181,7 @@ padronizar_logradouros <- function(logradouros) { "\\bPREF\\b\\.?" = "PREFEITO", "\\bDEP\\b\\.?" = "DEPUTADO", "\\bVER\\b\\.?[^$ ]" = "VEREADOR", + "\\bESPL?\\.? (DOS )?MIN(IST(ERIOS?)?)?\\b\\.?" = "ESPLANADA DOS MINISTERIOS", "\\bMIN\\b\\.?[^$ ]" = "MINISTRO", # abreviacoes @@ -170,7 +189,7 @@ padronizar_logradouros <- function(logradouros) { "\\b(CJ|CONJ)\\b\\.?" = "CONJUNTO", "\\bLT\\b\\.?" = "LOTE", "\\bLTS\\b\\.?" = "LOTES", - "\\bQD\\b\\.?" = "QUADRA", + "\\bQDA?\\b\\.?" = "QUADRA", "\\bLJ\\b\\.?" = "LOJA", "\\bLJS\\b\\.?" = "LOJAS", "\\bAPTO?\\b\\.?" = "APARTAMENTO", @@ -180,6 +199,7 @@ padronizar_logradouros <- function(logradouros) { "\\bEDI?F\\b\\.?" = "EDIFICIO", "\\bCOND\\b\\.?" = "CONDOMINIO", # apareceu antes mas como tipo de logradouro "\\bKM\\b\\." = "KM", + "\\bS\\.? ?N\\b\\.?" = "S/N", # SL pode ser sobreloja ou sala # intersecao entre nomes e titulos @@ -219,5 +239,7 @@ padronizar_logradouros <- function(logradouros) { ) ) + logradouros_padrao[indice_logradouro_vazio] <- "" + return(logradouros_padrao) } diff --git a/man/padronizar_logradouros.Rd b/man/padronizar_logradouros.Rd index e0e22a2..dcdd8bb 100644 --- a/man/padronizar_logradouros.Rd +++ b/man/padronizar_logradouros.Rd @@ -31,7 +31,7 @@ espaços em excesso entre palavras; } \examples{ -bairros <- c("PRQ IND", "NSA SEN DE FATIMA", "ILHA DO GOV") -padronizar_bairros(bairros) +logradouros <- c("r. gen.. glicério") +padronizar_logradouros(logradouros) } diff --git a/tests/testthat/test-padronizar_logradouros.R b/tests/testthat/test-padronizar_logradouros.R new file mode 100644 index 0000000..dda83c9 --- /dev/null +++ b/tests/testthat/test-padronizar_logradouros.R @@ -0,0 +1,16 @@ +test_that("da erro com inputs != de caracteres", { + expect_error(padronizar_logradouros(12)) +}) + +test_that("padroniza corretamente", { + # complicado fazer um teste pra cada uma das regexs usadas. testando só um + # basiquinho da manipulação, depois pensamos melhor se vale a pena fazer um + # teste pra cada regex ou não + + expect_equal(padronizar_logradouros("r. gen.. glicério"), "RUA GENERAL GLICERIO") + expect_equal(padronizar_logradouros(NA_character_), "") +}) + +test_that("lida com vetores vazios corretamente", { + expect_equal(padronizar_logradouros(character(0)), character(0)) +})