This function validates vectors of ZIP Code or ZCTA values. It
is used internally throughout zippeR
for data validation, but
is exported to facilitate troubleshooting.
Value
Either a logical value (if verbose = FALSE
) or a tibble
containing validation criteria and results.
Details
The zi_validate()
function checks for four conditions:
Is the input vector character data? This is important because of USPS's use of leading zeros in ZIP codes and ZCTAs.
Are all values five characters (if
style = "zcta5"
, the default), or three characters (ifstyle = "zcta3"
)?Are any input values over five characters (if
style = "zcta5"
, the default), or three characters (ifstyle = "zcta3"
)?Do any input values have non-numeric characters?
The questions provide a basis for repairing issues identified with
zi_repair()
.
Examples
# sample five-digit ZIPs
zips <- c("63088", "63108", "63139")
# successful validation
zi_validate(zips)
#> [1] TRUE
# sample five-digit ZIPs in data frame
zips <- data.frame(id = c(1:3), ZIP = c("63139", "63108", "00501"), stringsAsFactors = FALSE)
# successful validation
zi_validate(zips$ZIP)
#> [1] TRUE
# sample five-digit ZIPs with character
zips <- c("63088", "63108", "zip")
# failed validation
zi_validate(zips)
#> [1] FALSE
zi_validate(zips, verbose = TRUE)
#> # A tibble: 4 × 2
#> condition result
#> <chr> <lgl>
#> 1 Input is a character vector? TRUE
#> 2 All input values have 5 characters? FALSE
#> 3 No input values are over 5 characters long? TRUE
#> 4 All input values are numeric? FALSE