Я пытаюсь восстановить группирующую переменную для регионов внутри карты всех округов США. Мне не удалось найти масштабируемое решение этой проблемы с помощью поиска в Google и SO.
Вот упрощенный пример, использующий только штат Техас. Изображение представляет разные регионы в Техасе с разными цветами. Я хотел бы создать переменную группировки, в которой есть уровни для всех цветов, но я должен восстановить, какие графства являются частью каждого уровня (т. Е. У меня нет данных группировки в таблице).
Используя подход ответа kwalkertcu в этом посте , я сгенерировал ключ, который включает в себя почтовый индекс, код округа, название округа и широту / Информация о долготе для всех округов США.
library(tigris)
library(tidyverse)
library(sf)
options(tigris_use_cache = TRUE)
options(tigris_class = "sf")
cty <- counties(cb = TRUE) %>%
select(cty_id = GEOID, cty_name = NAME)
zc <- zctas(cb = TRUE)
zipcty <- st_join(zc, cty)
head(zipcty)
Моя стратегия первого прохода состоит в том, чтобы вручную изучить другие карты округов, чтобы идентифицировать все округа, которые образуют границу данного региона. Здесь я подгруппирую данные для включения желтой области Техаса:
# county names in yellow region
yl_names <- c("Floyd", "Motley", "Cottle", "Foard","Crosby", "Dickens", "King", "Knox",
"Garza", "Kent", "Stonewall", "Haskell", "Borden", "Scurry", "Fisher",
"Jones", "Howard", "Mitchell", "Nolan", "Taylor")
# get zipcodes of Texas
library(zipcode)
data("zipcode")
tx_zp <- zipcode$zip[zipcode$state %in% "TX"]
# subset zipcty for the Texas yellow region
texas_yl <- zipcty[zipcty$cty_name %in% yl_names & zipcty$ZCTA5CE10 %in% tx_zp,]
Теперь предположим, что я только вручную определил округа на внешней границе желтой области, но я также хотел включить все графства внутри границы (показаны белым цветом) на желтом уровне группирующей переменной.
(Эти округа называются Диккенс, Кинг, Кент, Стонуолл, Скарри и Фишер.)
Важно отметить, что я не хочу go из-за ручного осмотра карт, чтобы сделать правильные идентификация неграничных округов.
Существует ли масштабируемый способ сделать это в R
? Окончательное решение не обязательно должно использовать мою попытку, но я надеюсь, что это поможет достичь моей цели.