Is rising rent bringing you down?

Most students pay rent, or soon will. So of all the data I could use during the introductory weeks of this course, I think rent data has the best chance of keeping everyone interested.

We all have perceptions and opinions about rent. Some may be right. Others may be wrong. Media professionals don’t guess. They determine, based on reliable evidence.

The U.S. Department of Housing and Urban Development releases 40th percentile rent estimates each year for selected ZIP code in the U.S., mostly ZIP codes in urban areas. The “40th percentile rent” is the rent that is higher than 40 percent of rents for the area’s standard-quality, market-rate units occupied by recent movers. The estimates for 2026 just came out in October. See:

HUD Fair Market Rents

HUD uses these estimates to decide how much money to give people with incomes low enough to qualify for federal housing vouchers. But they’re also good for examining rent patterns across ZIP codes in a given area.


Fetching and tabulating FMR for Rutherford ZIP codes

With a few lines of R code, you can download all of that fair market rent data from across the U.S., filter it for the ZIP codes here in Rutherford County, and show the results in an easy-to-read table like this one:

Rutherford FMR, by size and ZIP
ZIP Studio BR1 BR2 BR3 BR4
37037 1900 1990 2180 2790 3400
37085 1320 1380 1520 1940 2360
37086 1730 1820 1990 2540 3100
37118 1150 1170 1320 1660 2020
37127 1360 1420 1560 1990 2430
37128 1570 1640 1800 2300 2800
37129 1570 1640 1800 2300 2800
37130 1280 1340 1470 1880 2290
37132 1280 1340 1470 1880 2290
37149 1150 1180 1320 1660 2020
37153 1670 1750 1920 2450 2990
37167 1430 1500 1640 2100 2560

How’d you do that?

Here’s the R code that grabbed and filtered the data, then made and displayed the table:


# Installing and loading required packages

if (!require("tidyverse"))
  install.packages("tidyverse")
if (!require("openxlsx"))
  install.packages("openxlsx")
if (!require("gtExtras"))
  install.packages("gtExtras")

library(tidyverse)
library(openxlsx)
library(gtExtras)

# Reading data from:
# https://www.huduser.gov/portal/datasets/fmr/smallarea/index.html#year2024

FMR <- read.xlsx("https://www.huduser.gov/portal/datasets/fmr/fmr2026/fy2026_safmrs.xlsx",sheet=1)

# Making a list of Rutherford County ZIP codes

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

# Filtering for Rutherford ZIP codes and
# selecting columns of interest

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

# Renaming the columns

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

# Showing the data as a table

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

Sorry you asked?

I’m guessing that wasn’t helpful. If you’re new to coding, or even to R code in particular, the script probably looks like gobbledygook.

But try this:

Running that script (something you’ll know how to do by the end of this week) will get R to do what you want it to do, even if you don’t know a single thing about writing R code.

Of course, I want you to learn at least a little bit about coding in R. Enough, at least, to know what to ask for and evaluate the quality and accuracy of what you get. The thing I want you to see, though, is that the R learning curve isn’t nearly as steep as you might imagine.

For now, let’s simply look at some of the other things R can do with the rent data.

A chart

The table’s great. It’s accurate, reliable data. That’s progress. But media professionals don’t just share reliable information. They share truthful, insightful stories. That’s what audiences pay for.

This chart focuses on a pattern in the data. That pattern tells a truthful, insightful story. You tell me - what’s the story, here? If you were writing a news story about what the chart shows, how would your story begin?



A map

But where are all of these ZIP codes? A map can help tell the story, especially if it’s interactive.


Typical rents in Rutherford County ZIP codes

A better map

The cheapest ZIP codes aren’t necessarily the best, though. Some ZIP codes have very few rentals available. Others have lots to pick from. Here’s the map again, but with some key information added from the U.S. Census Bureau’s American Community Survey. The new information tells you how many rental units are available in each ZIP code. The new information lets you tell the story more thoroughly.


Typical rents in Rutherford County ZIP codes

Mapping a pattern

Remember how the graphic showed a pattern in the table? You can do the same thing with a map. In this map, each ZIP code is shaded according to its three-bedroom rent estimate. Now, map viewers can quickly determine where the cheapest rents are, then get details on rents for all unit sizes and the number of units available.


Typical three-bedroom rents in Rutherford County ZIP codes

A bigger map

So, rent is expensive here. How do you figure we compare to ZIP codes throughout the Nashville area, though? Let’s zero in on three-bedroom rents. Again, we’re telling a better, more thorough story. Check out the map below, then think about questions like:


Typical three-bedroom rents in Nashville-area ZIP codes

A more up-to-date analysis

It takes a lot of time to gather data with as much breadth and depth as Small-Area Fair Market Rent. As a result, Fair Market Rent estimates don’t always reflect what rental conditions are right now.

If you can do without some of the breadth and depth, you can grab data from Zillow.com’s housing data page and get monthly rent estimates for as recent as the most-recently-completed month. The trade-off is that you can get data only for ZIP codes that include a lot of rental units. Happily for us, though, the data include the ZIP codes that surround MTSU’s campus: 37130 (which includes campus), as well as 37127 (south of campus, across South Rutherford Boulevard), 37128 (southeast of campus, toward the Blackman area), and 37129 (due east of campus, and northward along Memorial Boulevard.)

Below is a plot of Zillow’s monthly typical rent estimates for those four ZIP codes over the past 36 months, ending with this past December. My take is that rents in MTSU’s immediate ZIP code tend to be lower than rents in the other ZIP codes. However, rents in MTSU’s ZIP code seem to be rising faster than rents in the other ZIP codes, which seem to be holding steadier.



One more thing …

This page is coming to you from my account on RPubs.com, a place where you can publish and share R projects (like this one) for free. Early in the course, you will learn how to set up your own RPubs.com account and publish your work to it. In fact, that’s how you will turn in your class assignments. You will simply put your work on RPubs, then send me the URL.

Look how much you’ve learned!

I hope you know at least a few things about local and Nashville-area rents that you didn’t know before. And I hope you see that those things would be valuable to someone looking for a place to rent near campus. Most of all, I hope you see that you can make a whole career out of using data skills - like the ones you’re about to learn in this class - to extract valuable insights from raw data, as we have done here.