Пакет без переписи в 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 находится внутри, пересекает границу или касается границы округа.

Другие вопросы по тегам