# Read all columns as character to preserve leading zeros in FIPS codes and other IDscl <- readr::read_csv( corelogic_csv,col_types =cols(.default =col_character()))# Load study area parcels from GeoPackageparcels <- sf::st_read(parcels_gpkg, quiet =TRUE)# Confirm required join keys exist in both datasets before proceedingstopifnot("cntyfips"%in%names(parcels))stopifnot("FIPS CODE"%in%names(cl))cat("CoreLogic rows:", nrow(cl), " cols:", ncol(cl), "\n")cat("Parcels rows :", nrow(parcels), " cols:", ncol(parcels), "\n")
In [3]:
Show / hide code
# Build the county FIPS list from parcels, prefixed with "37" (NC state code)cntyfips_list <- parcels |> sf::st_drop_geometry() |> dplyr::distinct(cntyfips) |> dplyr::mutate(fips_full =paste0("37", cntyfips)) |> dplyr::pull(fips_full)# Trim CoreLogic to study area counties and drop duplicatescl_trim <- cl |> dplyr::filter(`FIPS CODE`%in% cntyfips_list) |> dplyr::distinct() |> dplyr::mutate(cl_index = dplyr::row_number())# Select columns of interestdesired_columns <-c("CLIP", "FIPS CODE", "APN (PARCEL NUMBER UNFORMATTED)", "APN SEQUENCE NUMBER","ORIGINAL APN", "ONLINE FORMATTED PARCEL ID", "ALTERNATE PARCEL ID","SITUS HOUSE NUMBER", "SITUS STREET NAME", "SITUS CITY", "SITUS ZIP CODE","MAILING HOUSE NUMBER", "MAILING STREET NAME", "MAILING CITY", "MAILING ZIP CODE","PARCEL LEVEL LATITUDE", "PARCEL LEVEL LONGITUDE", "LAND USE CODE","COUNTY USE DESCRIPTION", "STATE USE DESCRIPTION", "ZONING CODE DESCRIPTION","PROPERTY INDICATOR CODE", "TOTAL VALUE CALCULATED", "LAND VALUE CALCULATED","IMPROVEMENT VALUE CALCULATED", "ASSESSED TOTAL VALUE", "ASSESSED LAND VALUE","ASSESSED IMPROVEMENT VALUE", "MARKET TOTAL VALUE", "MARKET LAND VALUE","MARKET IMPROVEMENT VALUE", "ACRES", "YEAR BUILT", "EFFECTIVE YEAR BUILT","OWNER 1 FULL NAME", "cl_index")cl_trim <- cl_trim |> dplyr::select(dplyr::any_of(desired_columns))# Savereadr::write_csv(cl_trim, output_csv)