Вы можете использовать fuzzy_join
, чтобы объединить два фрейма данных вместе с str_detect
, чтобы найти строку переписного участка из demography
, содержащуюся в NAME
в clevelandhts
. Чтобы включить информацию о различных столбцах на карте в качестве меток, используйте geom_sf_label
.
Редактировать : Цвет заливки теперь основан на X.foreclosure_filings
.
library(tidycensus)
library(tidyverse)
library(fuzzyjoin)
options(tigris_use_cache = TRUE)
demography$tract <- as.character(demography$tract)
census_api_key("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
clevelandhts <- get_acs(state = "OH", county = "Cuyahoga", geography = "tract",
variables = "B19013_001", geometry = TRUE)
clevelandhts %>%
fuzzy_join(demography, by = c("NAME" = "tract"), match_fun = str_detect) %>%
ggplot(aes(fill = X.foreclosure_filings)) +
geom_sf(color = NA) +
coord_sf(crs = 26917) +
scale_fill_viridis_c(option = "magma") +
geom_sf_label(aes(label = X.foreclosure_filings))
Участок
Данные
demography <- read.table(
text = "County tract X.foreclosure_filings delinquent_parcels
Cuyahoga 1401.00 8 13.52
Cuyahoga 1403.01 18 22.25
Cuyahoga 1403.02 18 11.96
Cuyahoga 1404.00 19 8.44
Cuyahoga 1405.00 27 10.93
Cuyahoga 1407.01 17 13.77", header = T)
Редактировать ( 2/29/20) :
Чтобы добавить карту улиц внизу, вы можете сделать следующее.
В этом примере я использую карту улиц Google после ввода ключа API. Аргумент location для этого примера задается c, но границы ящика можно получить из clevelandhts
после объединения с таблицей demography
. Опять же, это просто демо. Если вам нужна дополнительная помощь, я бы посоветовал вам опубликовать отдельный вопрос.
# Requires Google API key
county_map <- get_map(location = c(-81.57,41.49,-81.52,41.56), maptype = "roadmap", source = "google")
full_data <- fuzzy_join(clevelandhts, demography, by = c("NAME" = "tract"), match_fun = str_detect)
ggmap(county_map) +
geom_sf(data = full_data, inherit.aes = FALSE, aes(fill = X.foreclosure_filings)) +
scale_fill_viridis_c(option = "magma", alpha = .2) +
geom_sf_label(data = full_data, aes(label = X.foreclosure_filings), inherit.aes = FALSE)