Rutherford County Rent Analysis

The table below shows the 2026 Small Area Fair Market Rents (SAFMR) for selected ZIP codes in Rutherford County. Rental prices are listed for studio through four-bedroom units. The Spread column represents the difference between four-bedroom rent and studio rent, illustrating how rental costs increase as unit size increases across the county.

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.6
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.1     ✔ tibble    3.3.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.2
## ✔ purrr     1.2.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
library(gt)

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

FMR <- read_xlsx("rent.xlsx", .name_repair = "universal")
## New names:
## • `ZIP Code` -> `ZIP.Code`
## • `HUD Area Code` -> `HUD.Area.Code`
## • `HUD Fair Market Rent Area Name` -> `HUD.Fair.Market.Rent.Area.Name`
## • `SAFMR 0BR` -> `SAFMR.0BR`
## • `SAFMR 0BR - 90% Payment Standard` -> `SAFMR.0BR...90..Payment.Standard`
## • `SAFMR 0BR - 110% Payment Standard` -> `SAFMR.0BR...110..Payment.Standard`
## • `SAFMR 1BR` -> `SAFMR.1BR`
## • `SAFMR 1BR - 90% Payment Standard` -> `SAFMR.1BR...90..Payment.Standard`
## • `SAFMR 1BR - 110% Payment Standard` -> `SAFMR.1BR...110..Payment.Standard`
## • `SAFMR 2BR` -> `SAFMR.2BR`
## • `SAFMR 2BR - 90% Payment Standard` -> `SAFMR.2BR...90..Payment.Standard`
## • `SAFMR 2BR - 110% Payment Standard` -> `SAFMR.2BR...110..Payment.Standard`
## • `SAFMR 3BR` -> `SAFMR.3BR`
## • `SAFMR 3BR - 90% Payment Standard` -> `SAFMR.3BR...90..Payment.Standard`
## • `SAFMR 3BR - 110% Payment Standard` -> `SAFMR.3BR...110..Payment.Standard`
## • `SAFMR 4BR` -> `SAFMR.4BR`
## • `SAFMR 4BR - 90% Payment Standard` -> `SAFMR.4BR...90..Payment.Standard`
## • `SAFMR 4BR - 110% Payment Standard` -> `SAFMR.4BR...110..Payment.Standard`
ZIPList <- c(
  "37127", "37128", "37129", "37130", "37132",
  "37085", "37118", "37149", "37037", "37153",
  "37167", "37086"
)

FMR %>%
  filter(ZIP.Code %in% ZIPList) %>%
  select(
    ZIP.Code,
    SAFMR.0BR,
    SAFMR.1BR,
    SAFMR.2BR,
    SAFMR.3BR,
    SAFMR.4BR
  ) %>%
  distinct() %>%
  rename(
    ZIP = ZIP.Code,
    Studio = SAFMR.0BR,
    BR1 = SAFMR.1BR,
    BR2 = SAFMR.2BR,
    BR3 = SAFMR.3BR,
    BR4 = SAFMR.4BR
  ) %>%
  mutate(Spread = BR4 - Studio) %>%
  gt() %>%
  tab_header(title = "Rutherford Rent Analysis") %>%
  cols_align(align = "left")
Rutherford Rent Analysis
ZIP Studio BR1 BR2 BR3 BR4 Spread
37037 1900 1990 2180 2790 3400 1500
37085 1320 1380 1520 1940 2360 1040
37086 1730 1820 1990 2540 3100 1370
37118 1150 1170 1320 1660 2020 870
37127 1360 1420 1560 1990 2430 1070
37128 1570 1640 1800 2300 2800 1230
37129 1570 1640 1800 2300 2800 1230
37130 1280 1340 1470 1880 2290 1010
37132 1280 1340 1470 1880 2290 1010
37149 1150 1180 1320 1660 2020 870
37153 1670 1750 1920 2450 2990 1320
37167 1430 1500 1640 2100 2560 1130

Code:

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

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

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

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

FMR %>%
  filter(ZIP.Code %in% ZIPList) %>%
  select(
    ZIP.Code,
    SAFMR.0BR,
    SAFMR.1BR,
    SAFMR.2BR,
    SAFMR.3BR,
    SAFMR.4BR
  ) %>%
  distinct() %>%
  rename(
    ZIP = ZIP.Code,
    Studio = SAFMR.0BR,
    BR1 = SAFMR.1BR,
    BR2 = SAFMR.2BR,
    BR3 = SAFMR.3BR,
    BR4 = SAFMR.4BR
  ) %>%
  mutate(Spread = BR4 - Studio) %>%
  gt() %>%
  tab_header(title = "Rutherford Rent Analysis") %>%
  cols_align(align = "left")