## Code
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")
Population <- data.frame(
County,
CurrentPop,
EarlierPop,
Region
)
Population <- Population %>%
arrange(desc(CurrentPop))
Population <- Population %>%
mutate(Change = CurrentPop - EarlierPop)
Change_only <- Population %>%
select(County, Change) %>%
arrange(desc(Change))
Doughnut <- Population %>%
filter(Region %in% c("Davidson", "Doughnut")) %>%
arrange(desc(Change))
Summary <- Population %>%
group_by(Region) %>%
summarize(
CurrentPop = sum(CurrentPop),
EarlierPop = sum(EarlierPop),
Change = sum(Change)
)
Population_v2 <- Population %>%
mutate(Percent_change = Change / EarlierPop) %>%
arrange(desc(Percent_change))
TN_Counties <- read_delim(
"https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2025_Gazetteer/2025_gaz_counties_47.txt",
delim = "|",
show_col_types = FALSE
)
Land_Area <- TN_Counties %>%
transmute(
County = str_remove(NAME, " County"),
Square_Miles = round(ALAND_SQMI)
)
Population_v2 <- left_join(Population_v2, Land_Area, by = "County")
Population_v2 <- Population_v2 %>%
mutate(Density = CurrentPop / Square_Miles) %>%
arrange(desc(Density))
Population_v2 <- Population_v2 %>%
mutate(Density_Category = case_when(
Density >= 500 ~ "High Density",
Density >= 100 & Density <= 499 ~ "Medium Density",
Density < 100 ~ "Low Density"
))
Population_v2_table <- Population_v2 %>%
kbl(caption = "Population_v2") %>%
kable_styling()