knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
The American Community Survey (ACS) offers geodatabases with geographic information and associated data of interest to researchers in the area. The goal of geogenr
is to facilitate access to this information through functions that allow us to select the geodatabases that interest us, download them, access the information they contain, filter it and export it in various formats so that we can process it with other tools if required.
You can install the released version of geogenr
from CRAN with:
install.packages("geogenr")
And the development version from GitHub with:
# install.packages("devtools") devtools::install_github("josesamos/geogenr")
Each ACS geodatabase is structured in layers: a geographic layer, a metadata layer, and the rest are data layers. Accessing data with this structure is not trivial. The goal of the geogenr
package is to make it easier.
First, we select and download the ACS geodatabases that we need. We can use the functions offered by the package or download and decompress them by other means. We create an object of class acs_5yr
indicating the work folder.
library(geogenr) dir <- system.file("extdata/acs_5yr", package = "geogenr") ac <- acs_5yr(dir)
We can query the available geodatabases by area, subject and year using the methods offered by the object. We also download the geodatabases of the areas and years that we need.
ac |> get_area_groups() ac |> get_areas(group = "Legal and Administrative Areas") ac |> get_area_years(area = "Alaska Native Regional Corporation") ac <- ac |> select_area_files("Alaska Native Regional Corporation", 2020:2021) files <- ac |> download_selected_files(unzip = FALSE)
dir <- tempdir() source_dir <- system.file("extdata/acs_5yr", package = "geogenr") files <- list.files(source_dir, "*.zip", full.names = TRUE) file.copy(from = files, to = dir, overwrite = TRUE) ac <- acs_5yr(dir)
We unzip the files and check that the data is available.
files <- ac |> unzip_files() ac |> get_available_areas() ac |> get_available_area_years(area = "Alaska Native Regional Corporation")
We consult the themes available in the selected area and also select one or more themes by creating an object of class acs_5yr_topic
.
ac |> get_available_area_topics("Alaska Native Regional Corporation") act <- ac |> as_acs_5yr_topic("Alaska Native Regional Corporation", topic = "X01 Age And Sex")
Once a topic has been selected, we can consult the available reports or subreports. We can focus on a report or subreport, we can also work with all the reports of the topic.
act |> get_report_names()
We can export the reports of the selected topic to various formats such as GeoPackage
, also flat_table
or star_database
of the rolap
package. In this case we are going to obtain a GeoPackage
.
geo <- act |> as_acs_5yr_geo() dir <- tempdir() file <- geo |> as_GeoPackage(dir) sf::st_layers(file)
This format also allows us to perform simple queries using the metadata and the geographic layer.
metadata <- geo |> get_metadata() metadata metadata <- dplyr::filter( metadata, item2 == "Female" & group == "People Who Are American Indian And Alaska Native Alone" & measure == "estimate" ) geo2 <- geo |> set_metadata(metadata) geo2 |> get_metadata() geo_layer <- geo2 |> get_geo_layer() geo_layer$faiana21vs20 <- 100 * (geo_layer$V1389 - geo_layer$V0671) / geo_layer$V0671 plot(sf::st_shift_longitude(geo_layer[, "faiana21vs20"]))
In GeoPackage
format we can also easily perform queries with other tools such as QGIS.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.