Пакет без переписи в R
Я пытаюсь использовать пакет noncensus в R для объединения данных ("zip_codes"), который содержит код фипов уровня округа, чтобы получить данные ("графства"), которые имеют фактическое название округа.
Мой набор данных содержит почтовые индексы для 100 наблюдений, и я пытаюсь сопоставить, в каком графстве они находятся. Оба округа и zip_codes имеют код округа, но когда я присоединяюсь к ним, они не совпадают, так как я возвращаю 0 значений.
library(noncensus)
data("zip_codes")
data("counties")
counties$county_fips <- as.numeric(as.character(counties$county_fips))
Test <- zip_codes %>%
left_join(counties, c("fips"="county_fips"))
Test <- Test %>%
slice(1:5) %>%
select(zip, city, state.x, county_name)
Если в R есть другие пакеты для получения округа из почтового индекса, я бы тоже попробовал это сделать.
Спасибо,
1 ответ
Коды ZCTA FIPS не имеют отношения к округам FIPS. ZCTA также не гнездятся внутри округов и могут пересекать границы округов. Таким образом, вам понадобятся пространственные методы без какой-либо другой таблицы соответствия. Этот код R сделает это:
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)
Результат возвращает строку для каждой уникальной комбинации ZCTA/county; пространственный метод по умолчанию для st_join
is "пересекается", так что это может означать, что ZCTA находится внутри, пересекает границу или касается границы округа.