diff --git a/NEWS.md b/NEWS.md index b64872d..9579ac1 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,9 +2,12 @@ ## Correção de bugs -- Corrigido bug na `padronizar_numeros()` em que zeros após o separador de milhares -eram suprimidos. Por exemplo, "1.028" virava "1.28". Relacionado ao [issue -#37](https://github.com/ipeaGIT/enderecobr/issues/37). +- Corrigido bug na `padronizar_numeros()` em que zeros após o separador de +milhares eram suprimidos. Por exemplo, "1.028" virava "1.28". Relacionado ao +[issue #37](https://github.com/ipeaGIT/enderecobr/issues/37). +- Corrigido bug na `padronizar_numeros()` em que zeros de vetores numéricos não +eram adequadamente transformados em "S/N". Relacionado ao [issue +#38](https://github.com/ipeaGIT/enderecobr/issues/38). ## Novas funcionalidades diff --git a/R/padronizar_numeros.R b/R/padronizar_numeros.R index 7eaa5d8..b09de9e 100644 --- a/R/padronizar_numeros.R +++ b/R/padronizar_numeros.R @@ -35,10 +35,9 @@ padronizar_numeros <- function(numeros) { ) if (is.numeric(numeros)) { - numeros_na <- which(is.na(numeros)) - - numeros_padrao <- formatC(numeros, format = "d") - numeros_padrao[numeros_na] <- "S/N" + numeros_padrao <- data.table::fifelse(numeros == 0, NA_integer_, numeros) + numeros_padrao <- formatC(numeros_padrao, format = "d") + numeros_padrao[numeros_padrao == "NA"] <- "S/N" return(numeros_padrao) } diff --git a/tests/testthat/test-padronizar_numeros.R b/tests/testthat/test-padronizar_numeros.R index 95a5f92..364f090 100644 --- a/tests/testthat/test-padronizar_numeros.R +++ b/tests/testthat/test-padronizar_numeros.R @@ -13,6 +13,7 @@ test_that("lida com vetores vazios corretamente", { test_that("padroniza corretamente - numero", { gabarito <- tibble::tribble( ~original, ~padronizado_esperado, + 0, "S/N", # issue #38 (https://github.com/ipeaGIT/enderecobr/issues/38) 1, "1", 1.1, "1", NA_integer_, "S/N",