Middle Tennessee Regional Population & Density Overview

The table below provides a comprehensive summary of population shifts, total population change, percentage change, and population density across fourteen Middle Tennessee counties. The primary data used to analyze these demographic changes came from the U.S. Census Bureau’s American Community Survey. As demonstrated in the data, suburban “Doughnut” counties surrounding Davidson County, specifically Rutherford, Williamson, and Wilson—experienced the highest rates of overall population expansion. While Davidson County retains the highest absolute population density per square mile, the surrounding suburban area continues to absorb a significant proportion of regional growth, causing medium-density categories to spread further into neighboring counties.

Data Wrangling Script

Below is the complete R script used to process the population vectors, calculate density metrics, and construct the formatted output table.

library(tidyverse)
library(knitr)
library(kableExtra)

County <- c("Cannon", "Cheatham", "Davidson", "Dickson", "Hickman", "Macon", 
            "Maury", "Robertson", "Rutherford", "Smith", "Sumner", "Trousdale", 
            "Williamson", "Wilson")

CurrentPop <- c(14818, 41829, 715388, 55983, 25436, 26240, 107791, 75539, 360646, 
                20389, 204424, 11957, 260351, 158805)

EarlierPop <- c(13958, 39087, 598184, 51608, 24561, 23261, 88738, 67517, 292425, 
                19389, 174773, 10131, 208242, 129918)

Region <- c("Non-doughnut", "Doughnut", "Davidson", "Non-doughnut", "Non-doughnut", 
            "Non-doughnut", "Non-doughnut", "Doughnut", "Doughnut", "Non-doughnut", 
            "Doughnut", "Non-doughnut", "Doughnut", "Doughnut")

LandArea <- c(266, 303, 504, 490, 613, 307, 
              613, 477, 619, 314, 529, 114, 
              583, 571)

Population <- data.frame(County, CurrentPop, EarlierPop, Region, LandArea) %>% 
  mutate(Change = CurrentPop - EarlierPop)

Population_v2 <- Population %>% 
  mutate(
    Percent_change = Change / EarlierPop,
    Density = CurrentPop / LandArea,
    Density_Category = case_when(
      Density >= 500 ~ "High",
      Density >= 100 ~ "Medium",
      TRUE ~ "Low"
    )
  ) %>% 
  arrange(desc(Percent_change))

Population & Density Table

The revised table below pulls directly from the updated Population_v2 data frame and incorporates the newly computed Density and Density_Category variables.

library(tidyverse)
library(knitr)
library(kableExtra)

Population_v2_table <- Population_v2 %>% 
  mutate(
    CurrentPop = format(CurrentPop, big.mark = ","),
    EarlierPop = format(EarlierPop, big.mark = ","),
    Change = format(Change, big.mark = ","),
    Percent_change = sprintf("%.1f%%", Percent_change * 100),
    Density = sprintf("%.1f", Density)
  ) %>% 
  kable(
    caption = "Population v2: Regional Growth & Density Summary",
    col.names = c("County", "Current Pop", "Earlier Pop", "Region", "Land Area (sq mi)", "Change", "% Change", "Density (per sq mi)", "Density Category"),
    align = c("l", "r", "r", "c", "r", "r", "r", "r", "c")
  ) %>% 
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = FALSE
  ) %>% 
  row_spec(0, bold = TRUE, background = "#2C3E50", color = "white")

Population_v2_table
Population v2: Regional Growth & Density Summary
County Current Pop Earlier Pop Region Land Area (sq mi) Change % Change Density (per sq mi) Density Category
Williamson 260,351 208,242 Doughnut 583 52,109 25.0% 446.6 Medium
Rutherford 360,646 292,425 Doughnut 619 68,221 23.3% 582.6 High
Wilson 158,805 129,918 Doughnut 571 28,887 22.2% 278.1 Medium
Maury 107,791 88,738 Non-doughnut 613 19,053 21.5% 175.8 Medium
Davidson 715,388 598,184 Davidson 504 117,204 19.6% 1419.4 High
Trousdale 11,957 10,131 Non-doughnut 114 1,826 18.0% 104.9 Medium
Sumner 204,424 174,773 Doughnut 529 29,651 17.0% 386.4 Medium
Macon 26,240 23,261 Non-doughnut 307 2,979 12.8% 85.5 Low
Robertson 75,539 67,517 Doughnut 477 8,022 11.9% 158.4 Medium
Dickson 55,983 51,608 Non-doughnut 490 4,375 8.5% 114.3 Medium
Cheatham 41,829 39,087 Doughnut 303 2,742 7.0% 138.0 Medium
Cannon 14,818 13,958 Non-doughnut 266 860 6.2% 55.7 Low
Smith 20,389 19,389 Non-doughnut 314 1,000 5.2% 64.9 Low
Hickman 25,436 24,561 Non-doughnut 613 875 3.6% 41.5 Low

Interpretation of Results

  1. Growth Trends: The highest percentage growth is concentrated heavily in suburban “Doughnut” counties (such as Rutherford, Williamson, and Wilson), outstripping the relative growth rate of central Davidson County.

  2. Density Classifications: Davidson County maintains the highest overall density rating, while immediate surrounding suburban counties fall into the medium-to-high density tiers. Rural “Non-doughnut” counties consistently exhibit low population density (under 100 residents per square mile).