Rutherford County Rents, Zip Code Averages

In Rutherford County, average rent prices vary widely between zip codes, with areas near Middle Tennessee State University seeing the lowest prices, likely to leave cheaper housing for the college students.

This table shows the average prices at each zip code from largest to lowest, divided by each floor plan. The code to generate the table is listed below the table.

Rutherford FMR, by size and ZIP
ZIP Studio BR1 BR2 BR3 BR4 ZIP_Average Spread
37037 1900 1990 2180 2790 3400 2452 1500
37086 1730 1820 1990 2540 3100 2236 1370
37153 1670 1750 1920 2450 2990 2156 1320
37128 1570 1640 1800 2300 2800 2022 1230
37129 1570 1640 1800 2300 2800 2022 1230
37167 1430 1500 1640 2100 2560 1846 1130
37127 1360 1420 1560 1990 2430 1752 1070
37085 1320 1380 1520 1940 2360 1704 1040
37130 1280 1340 1470 1880 2290 1652 1010
37132 1280 1340 1470 1880 2290 1652 1010
37149 1150 1180 1320 1660 2020 1466 870
37118 1150 1170 1320 1660 2020 1464 870
# ----------------------------------------------------------
# Install & load required packages
# ----------------------------------------------------------

if (!require("tidyverse"))
  install.packages("tidyverse")
if (!require("gt"))
  install.packages("gt")

library(tidyverse)
library(readxl)
library(gt)

# ----------------------------------------------------------
# Download HUD SAFMR Excel file
# ----------------------------------------------------------

download.file(
  "https://www.huduser.gov/portal/datasets/fmr/fmr2026/fy2026_safmrs.xlsx",
  "rent.xlsx",
  mode = "wb"
)

# ----------------------------------------------------------
# Read Excel data
# ----------------------------------------------------------

FMR <- read_xlsx(path = "rent.xlsx", .name_repair = "universal")

# ----------------------------------------------------------
# Rutherford County ZIP Codes
# ----------------------------------------------------------

ZIPList <- c(
  "37127", "37128", "37129", "37130", "37132",
  "37085", "37118", "37149", "37037", "37153",
  "37167", "37086"
)

# ----------------------------------------------------------
# Filter, select columns, and rename
# ----------------------------------------------------------

FMR_RuCo <- FMR %>%
  filter(ZIP.Code %in% ZIPList) %>%
  select(
    ZIP.Code,
    SAFMR.0BR,
    SAFMR.1BR,
    SAFMR.2BR,
    SAFMR.3BR,
    SAFMR.4BR
  ) %>%
  distinct()

colnames(FMR_RuCo) <- c("ZIP", "Studio", "BR1", "BR2", "BR3", "BR4")

# ----------------------------------------------------------
# Adding each ZIP code's average
# ----------------------------------------------------------

FMR_RuCo <- FMR_RuCo %>%
  mutate(ZIP_Average = round((Studio + BR1 + BR2 + BR3 + BR4) / 5,0))

# ----------------------------------------------------------
# Dividing the 4BR rent by 4
# ----------------------------------------------------------

FMR_RuCo <- FMR_RuCo %>%
  mutate(Spread = BR4 - Studio) %>%
  arrange(desc(Spread))

# ----------------------------------------------------------
# Sorting by ZIP_Average, in descending order
# ----------------------------------------------------------

# Add your sort code here

FMR_RuCo <- FMR_RuCo %>%
  arrange(desc(ZIP_Average))


# ----------------------------------------------------------
# Displaying the table, with the new columns
# ----------------------------------------------------------

FMR_RuCo_table <- gt(FMR_RuCo) %>%
  tab_header(title = "Rutherford FMR, by size and ZIP") %>%
  cols_align(align = "left")

FMR_RuCo_table