Rents in Rutherford County

Below is an interactive map of Rutherford County Zip codes, the shaded areas directly correlate to the average rent in the area. Hover over the zip code to see the average rents of various households. Rent estimates are provided by the American Community Survey.

# Installing and loading required packages
if (!require("tidyverse")) 
  install.packages("tidyverse")
if (!require("gtExtras")) 
  install.packages("gtExtras")
if (!require("leafpop")) 
  install.packages("leafpop")
if (!require("sf")) 
  install.packages("sf")
if (!require("mapview")) 
  install.packages("mapview")
if (!require("RColorBrewer")) 
  install.packages("RColorBrewer")
if (!require("tidycensus")) 
  install.packages("tidycensus")

library(tidyverse)
library(gtExtras)
library(sf)
library(mapview)
library(leafpop)
library(RColorBrewer)
library(tidycensus)

# Transmitting API key
census_api_key("60e19f7ff69b7368570b2a6560506673a1e4017c")

# Fetching the Census data
Census_Data <- get_acs(
  geography = "zcta",
  variables = c("DP04_0047", "DP04_0045"),
  year = 2023,
  survey = "acs5",
  output = "wide",
  geometry = FALSE
)

# Making better column names
Census_Data <- Census_Data %>% 
  rename(Rentals = DP04_0047E, 
         Rentals_MOE = DP04_0047M, 
         Households = DP04_0045E, 
         Households_MOE = DP04_0045M)

# Redownloading the rent data
FMR_RuCo <- read_csv("https://raw.githubusercontent.com/drkblake/Data/refs/heads/main/FMR_RuCo.csv")

# Downloading and extracting ZIP code map file
download.file(
  "https://www2.census.gov/geo/tiger/GENZ2020/shp/cb_2020_us_zcta520_500k.zip",
  "ZCTAs2020.zip")
unzip("ZCTAs2020.zip")

ZCTAMap <- read_sf("cb_2020_us_zcta520_500k.shp")

# Filtering for Rutherford County ZIP codes
FMR_RuCo$ZIP <- as.character(FMR_RuCo$ZIP)
FMR_RuCo_Map <- left_join(FMR_RuCo, ZCTAMap, by = c("ZIP" = "ZCTA5CE20")) %>%
  select(ZIP, Studio, BR1, BR2, BR3, BR4, ZIP_Average, geometry) %>%
  st_as_sf()

# Merging rent data with Census data
FMR_RuCo_Map <- left_join(FMR_RuCo_Map, Census_Data, by = c("ZIP" = "GEOID"))

# Creating an interactive map with pop-ups
ZIP_Map <- mapview(
  FMR_RuCo_Map,
  zcol = "ZIP_Average",
  col.regions = brewer.pal(9, "Blues"),
  layer.name = "Average Rent",
  popup = popupTable(
    FMR_RuCo_Map,
    feature.id = FALSE,
    row.numbers = FALSE,
    zcol = c("ZIP", "Studio", "BR1", "BR2", "BR3", "BR4", 
             "Rentals", "Rentals_MOE", "Households", "Households_MOE")
  )
)

# Showing the map
ZIP_Map