Skip to content

Commit

Permalink
Add function to load fips data
Browse files Browse the repository at this point in the history
  • Loading branch information
pdil committed Dec 11, 2023
1 parent 39e2cb8 commit 9934cac
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 0 deletions.
1 change: 1 addition & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Generated by roxygen2: do not edit by hand

export(centroid_labels)
export(fips_data)
export(us_map)
29 changes: 29 additions & 0 deletions R/fips-data.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#' Retrieve state and county FIPS codes
#'
#' @param regions The region breakdown for the map, can be one of
#' (\code{"states"}, \code{"state"}, \code{"counties"}, \code{"county"}).
#' The default is \code{"states"}.
#'
#' @return A data frame of FIPS codes of the desired \code{regions}.
#'
#' @examples
#' str(fips_data())
#'
#' state_fips <- fips_data()
#' county_fips <- fips_data(regions = "counties")
#'
#' @export
fips_data <- function(regions = c("states", "state", "counties", "county")) {
regions_ <- match.arg(regions)

if (regions_ == "state" || regions_ == "states")
utils::read.csv(
system.file("extdata", "state_fips.csv", package = "usmap"),
colClasses = rep("character", 3), stringsAsFactors = FALSE
)
else if (regions_ == "county" || regions_ == "counties")
utils::read.csv(
system.file("extdata", "county_fips.csv", package = "usmap"),
colClasses = rep("character", 4), stringsAsFactors = FALSE
)
}
26 changes: 26 additions & 0 deletions man/fips_data.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

42 changes: 42 additions & 0 deletions tests/testthat/test-fips-data.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
context("Loading FIPS data")

test_that("state FIPS codes load correctly", {
fips <- fips_data()
state_fips <- fips_data("state")
states_fips <- fips_data("states")

expect_identical(fips, state_fips)
expect_identical(fips, states_fips)
expect_identical(state_fips, states_fips)

expect_equal(length(fips), 3)
expect_equal(length(fips[, 1]), 51)

expect_equal(fips[1, "abbr"], "AK")
expect_equal(fips[1, "fips"], "02")
expect_equal(fips[1, "full"], "Alaska")

expect_equal(fips[51, "abbr"], "WY")
expect_equal(fips[51, "fips"], "56")
expect_equal(fips[51, "full"], "Wyoming")
})

test_that("county FIPS codes load correctly", {
county_fips <- fips_data("county")
counties_fips <- fips_data("counties")

expect_identical(county_fips, counties_fips)

expect_equal(length(county_fips), 4)
expect_equal(length(county_fips[, 1]), 3235)

expect_equal(county_fips[1, "full"], "Alaska")
expect_equal(county_fips[1, "abbr"], "AK")
expect_equal(county_fips[1, "county"], "Aleutians West Census Area")
expect_equal(county_fips[1, "fips"], "02016")

expect_equal(county_fips[3235, "full"], "Wyoming")
expect_equal(county_fips[3235, "abbr"], "WY")
expect_equal(county_fips[3235, "county"], "Washakie County")
expect_equal(county_fips[3235, "fips"], "56043")
})

0 comments on commit 9934cac

Please sign in to comment.