| Rutherford FMR, by size and ZIP |
| ZIP |
Studio |
BR1 |
BR2 |
BR3 |
BR4 |
ZIP_Average |
Rent_Category |
| 37037 |
1900 |
1990 |
2180 |
2790 |
3400 |
2452 |
Above BR2 average |
| 37086 |
1730 |
1820 |
1990 |
2540 |
3100 |
2236 |
Above BR2 average |
| 37153 |
1670 |
1750 |
1920 |
2450 |
2990 |
2156 |
Above BR2 average |
| 37128 |
1570 |
1640 |
1800 |
2300 |
2800 |
2022 |
Above BR2 average |
| 37129 |
1570 |
1640 |
1800 |
2300 |
2800 |
2022 |
Above BR2 average |
| 37167 |
1430 |
1500 |
1640 |
2100 |
2560 |
1846 |
Below BR2 average |
| 37127 |
1360 |
1420 |
1560 |
1990 |
2430 |
1752 |
Below BR2 average |
| 37085 |
1320 |
1380 |
1520 |
1940 |
2360 |
1704 |
Below BR2 average |
| 37130 |
1280 |
1340 |
1470 |
1880 |
2290 |
1652 |
Below BR2 average |
| 37132 |
1280 |
1340 |
1470 |
1880 |
2290 |
1652 |
Below BR2 average |
| 37149 |
1150 |
1180 |
1320 |
1660 |
2020 |
1466 |
Below BR2 average |
| 37118 |
1150 |
1170 |
1320 |
1660 |
2020 |
1464 |
Below BR2 average |
# ----------------------------------------------------------
# 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))
FMR_RuCo <- FMR_RuCo %>%
arrange(desc(ZIP_Average))
Average_BR2 <- round(mean(FMR_RuCo$BR2),0)
Average_BR2
FMR_RuCo <- FMR_RuCo %>%
mutate(
Rent_Category = case_when(
BR2 > Average_BR2 ~ "Above BR2 average",
BR2 == Average_BR2 ~ "BR2 Average",
BR2 < Average_BR2 ~ "Below BR2 average",
.default = "Error"))
# ----------------------------------------------------------
# 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