The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

R-CMD-check Codecov test coverage

actiwalkability

actiwalkability provides helpers for querying the EPA Walkability Index and working with Census GEOID/FIPS identifiers.

Core entry points:

Installation

You can install actiwalkability from GitHub with:

# install.packages("remotes")
remotes::install_github("jhuwit/actiwalkability")

Quick start

The EPA index is reported for Census block groups. Start with an address lookup that contains 12-character, Census 2010 block-group GEOIDs; keep these identifiers as character values so leading zeroes are retained.

library(actiwalkability)

addresses <- dplyr::tibble(
  address_id = c("address_1", "address_2", "address_3"),
  geoid = c("240054519002", "240054026041", "245102303002")
)

knitr::kable(addresses)
address_id geoid
address_1 240054519002
address_2 240054026041
address_3 245102303002

If state, county, tract, and block identifiers are available instead, create a block-group GEOID with acti_fips12():

acti_fips12(state = 24, county = 510, tract = 60400, block = 2002)
#> [1] "245100604002"

Query the EPA layer with the unique GEOIDs. This is a live service request; the chunk is cached so subsequent README renders reuse the saved result.

walkability <- acti_epa_walkability(
  unique(addresses$geoid),
  geometry = FALSE,
  fields = c("GEOID10", "NatWalkInd")
)
knitr::kable(dplyr::select(
  as.data.frame(walkability),
  GEOID10, NatWalkInd, cat_walk_index
))
GEOID10 NatWalkInd cat_walk_index
240054519002 4.166667 [1,5.75]
245102303002 14.333333 (10.5,15.2]
240054026041 8.666667 (5.75,10.5]

Join the returned index values back to the address lookup:

address_walkability <- dplyr::left_join(
  addresses,
  walkability,
  by = c("geoid" = "GEOID10")
)

knitr::kable(dplyr::select(
  address_walkability,
  address_id, geoid, NatWalkInd, cat_walk_index
))
address_id geoid NatWalkInd cat_walk_index
address_1 240054519002 4.166667 [1,5.75]
address_2 240054026041 8.666667 (5.75,10.5]
address_3 245102303002 14.333333 (10.5,15.2]

Map the example block groups

The EPA values are joined to Census TIGERweb 2010 block-group boundaries, the boundary vintage that matches GEOID10. The hard-coded plot extent provides the wider Baltimore, Maryland context, while keeping the README dependencies small. This query is cached in the README.

census_block_groups <- arcgislayers::arc_open(
  "https://tigerweb.geo.census.gov/arcgis/rest/services/Census2020/Tracts_Blocks/MapServer/5"
)
census_where <- paste0(
  "GEOID IN (",
  paste0("'", unique(addresses$geoid), "'", collapse = ", "),
  ")"
)
block_groups_2010 <- arcgislayers::arc_select(
  census_block_groups,
  where = census_where,
  geometry = TRUE,
  fields = c("GEOID", "INTPTLAT", "INTPTLON")
) |>
  dplyr::rename(GEOID10 = GEOID)

walkability_map <- dplyr::left_join(
  block_groups_2010,
  dplyr::select(as.data.frame(walkability), GEOID10, NatWalkInd),
  by = "GEOID10"
)

walkability_labels <- dplyr::mutate(
  as.data.frame(walkability_map),
  longitude = as.numeric(INTPTLON),
  latitude = as.numeric(INTPTLAT)
)

ggplot2::ggplot() +
  ggplot2::geom_sf(
    data = walkability_map,
    ggplot2::aes(fill = NatWalkInd),
    colour = "white"
  ) +
  ggrepel::geom_text_repel(
    data = walkability_labels,
    ggplot2::aes(longitude, latitude, label = GEOID10),
    seed = 2026,
    min.segment.length = 0,
    size = 3
  ) +
  ggplot2::scale_fill_viridis_c(name = "Walkability\nindex") +
  ggplot2::coord_sf(
    crs = 4326,
    default_crs = 4326,
    xlim = c(-77, -76.1),
    ylim = c(39, 39.7),
    expand = FALSE
  ) +
  ggplot2::labs(
    title = "Example Census block groups in Baltimore, Maryland",
    subtitle = "EPA National Walkability Index"
  ) +
  ggplot2::theme_minimal()

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.