library(tidycensus)
library(tidyverse)
## Population Data ##
# Getting population data from 2000-2020 Decennial Census.
# The 2020 total population API is "P1_001N."
# The 2010 and 2000 total population API is "P001001."
<- get_decennial(geography = "place",
pop state = "IA",
variables = c("pop20" = "P1_001N"),
year = 2020,
output = "wide")
<- get_decennial(geography = "place",
pop10 state = "IA",
variable = c("pop10"="P001001"),
year = 2010,
output = "wide")
<- get_decennial(geography = "place",
pop00 state = "IA",
variable = c("pop00"="P001001"),
year = 2000,
output = "wide")
# Join the 2020, 2010, and 2000 total population data by GEOID and NAME.
<- pop %>%
pop left_join(pop10,by = c("GEOID","NAME"))
<- pop %>%
pop left_join(pop00,by = c("GEOID","NAME"))
# Next, determine which cities are growing, shrinking, or stable in population.
# Will need to calculate the percent population change (first pop - second pop / first pop).
# A stable population is between -2% and 2% population change.
# An increasing population has a greater than 2% population change.
# A decreasing population has a less than -2% population change.
<- pop %>%
pop mutate(prc_change = ((pop20 - pop00) / pop20)) %>% #calculating percent change over 2000-2020
mutate(change_label = ifelse(prc_change > .02, "Growing",
ifelse(prc_change < -.02, "Shrinking", "Stable")))
head(pop)
Monday
On Monday, my group had our final? meeting with our stakeholders, Erin Mullinex and Erin Olson-Douglas. I got some clarification on what they expected from the demographic analysis from the meeting. They wanted me to look further into economic and fiscal conditions of Iowa’s communities.
Erin and Erin’s intention with our project is to improve the housing stock across the state. To do so, we need to identify which communities need improvement based on external factors. The final destination after three years is to create an application that assess housing conditions and generates a map of housing characteristic quality.
Erin and Erin also let me know that thriving communities tend to have an employer of some sort. Communities with an employer do well because the employer may provide grants and funding to improve the community. Thriving communities are also growing in population and sometimes have lending institutions and non-profits.
So far, I know to look at the following characteristics in the communities that could benefit from our project:
populations between 500 and 10,000
population change from 2000-2020: growing, stable, or shrinking?
median age of residents
presence of ag-related industries
home ownership rates
percent of residents commuting to work
number of jobs
median income
income change
workforce characteristics (this one is still confusing)
local spending patterns (don’t know where to find this data yet)
After the meeting with Erin and Erin, I spent the rest of the day sorting WINVEST photos to train our AI Models. The photos are stored in CyBox under the communities they are associated with. Chris made a CSV file of the WINVEST data that we used to filter for poor roofs, poor siding, poor landscaping, and poor gutter. The CSV has the image name in a column, so we could then manually search for the image names associated with the poor values. I also went to Durham’s GIS lab to create community summary infographics for Independence, New Hampton, and Grundy Center.
Community summary infographics are really easy to make.
- Download shapefile for the geography you want to make an infographic for. For me, this was the places geography that I downloaded from the Census’s shapefile directory.
- Insert the geography shapefile into ArcGIS Pro.
- Search for infographics in the tool bar.
- Click on the geography you want to make an infographic for.
- Select which type of infographic you would like. There are a lot of pre-loaded infographics available for free on ArcGIS Pro. I chose the Community Summary template to create the infographics above.
Some of the elements on the infographics you can toggle to compare to different geographies. The Iowa community summary had the option to compare to the United States. The city infographics I could choose to compare to the county, state, or nation.
Tuesday
On Tuesday, I was able to start the demographic analysis. I worked with population data and housing data from the 2021 5-Year American Community Survey.
GEOID | NAME | pop20 | pop10 | pop00 | prc_change | change_lable |
---|---|---|---|---|---|---|
1900190 | Ackley | 1599 | 1589 | 1809 | -0.131332083 | Shrinking |
1900235 | Ackworth | 115 | 83 | 85 | 0.260869565 | Growing |
1900370 | Adair | 791 | 781 | 839 | -0.060682680 | Shrinking |
1900505 | Adel | 6153 | 3682 | 3435 | 0.441735739 | Growing |
1900595 | Afton | 874 | 845 | 917 | -0.049199085 | Shrinking |
## Housing Data ##
# Getting housing data from the 2021 5-Year American Community Survey.
# Using the following API codes from the ACS:
# total housing units = "B25001_001"
# owner occupied units = "B25003_002"
# renter occupied units = "B25003_003"
# total occupied units = "B25002_002"
# total vacant units = "B25002_003"
# median house value = "B25077_001"
# median house age = "B25035_001"
<- get_acs(geography = "place",
housing state = "IA",
variable = c("total_units" = "B25001_001",
"occupied_units" = "B25002_002",
"vacant_units" = "B25002_003",
"owner_occupied" = "B25003_002",
"renter_occupied" = "B25003_003",
"median_house_value" = "B25007_001"),
year = 2021,
output = "wide")
# Getting median year built data from ACS.
<- get_acs(geography = "place",
median_age state = "IA",
variable = c("median_year_built" = "B25035_001"),
year = 2021,
output = "wide")
# Calculate the median house age by subtracting the median year built from 2023.
<- median_age %>%
median_age mutate(median_year_builtE = ifelse(median_year_builtE == 0, NA, median_year_builtE)) %>%
mutate(median_house_ageE = 2023 - median_year_builtE) %>%
mutate(median_house_ageM = median_year_builtM) # Don't have to make a new moe because the subtraction didn't introduce new errors to the data.
# Join the median year built data to the larger housing data frame.
<- housing %>%
housing left_join(median_age, by = c("GEOID","NAME"))
# Calculate home ownership, vacany, and rental rates.
# ALL RATES ARE PERCENTAGES with these calculations.
<- housing %>%
housing mutate(home_ownership_rateE = (owner_occupiedE / occupied_unitsE)) %>% # Divide owner occupied units by total occupied units.
mutate(home_ownership_rateM = (sqrt((owner_occupiedM^2) / (occupied_unitsE^2) + ((owner_occupiedE * occupied_unitsM)^2) / (occupied_unitsE^4)))) %>% # Calculate the new moe.
mutate(rental_rateE = (renter_occupiedE / occupied_unitsE)) %>% # Divide renter occupied units by total occupied units.
mutate(rental_rateM = (sqrt((renter_occupiedM^2) / (occupied_unitsE^2) + ((renter_occupiedE * occupied_unitsM)^2) / (occupied_unitsE^4)))) %>% # Calculate the new moe.
mutate(vacancy_rateE = (vacant_unitsE / total_unitsE)) %>% # Divide vacant units by total units.
mutate(vacancy_rateM = (sqrt((vacant_unitsM^2) / (total_unitsE^2) + ((vacant_unitsE * total_unitsM)^2) / (total_unitsE^4)))) # Calculate the new moe.
head(housing)
GEOID | NAME | total_unitsE | total_unitsM | occupied_unitsE | occupied_unitsM | vacant_unitsE | vacant_uintsM | owner_occupiedE | owner_occupiedM | renter_occupiedE | renter_occupiedM | median_house_valueE | median_house_valueM | median_year_builtE | median_year_builtM | median_house_ageE | median_house_ageM | home_ownership_rateE | home_ownership_rateM | vacancy_rateE | vacancy_rateM | rental_rateE | rental_rateM |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1900190 | Ackley | 800 | 71 | 705 | 69 | 95 | 39 | 553 | 59 | 152 | 48 | 705 | 69 | 1955 | 5 | 68 | 5 | 0.7843972 | 0.11356683 | 0.118750000 | 0.049876190 | 0.21560284 | 0.07128013 |
1900235 | Ackworth | 47 | 20 | 47 | 20 | 0 | 10 | 35 | 17 | 12 | 11 | 47 | 20 | 1999 | 11 | 24 | 11 | 0.7446809 | 0.48087923 | 0.000000000 | 0.212765957 | 0.25531915 | 0.25803094 |
1900370 | Adair | 384 | 60 | 344 | 59 | 40 | 27 | 207 | 44 | 137 | 44 | 344 | 59 | 1960 | 8 | 63 | 8 | 0.6017442 | 0.16435236 | 0.104166667 | 0.072171720 | 0.39825581 | 0.14500288 |
1900505 | Adel | 2312 | 151 | 2234 | 120 | 78 | 97 | 1548 | 171 | 686 | 157 | 2234 | 120 | 1978 | 7 | 45 | 7 | 0.6929275 | 0.08511417 | 0.033737024 | 0.042012837 | 0.30707252 | 0.07218725 |
1900595 | Afton | 382 | 56 | 357 | 53 | 25 | 16 | 251 | 40 | 106 | 36 | 357 | 53 | 1962 | 3 | 61 | 3 | 0.7030812 | 0.15313072 | 0.065445026 | 0.042969563 | 0.29691877 | 0.11005386 |
## Taxable Property Values ##
#link to data: https://data.iowa.gov/Local-Government-Finance/Taxable-Property-Values-in-Iowa-by-Tax-District-an/ig9g-pba5
<- read.csv("C:/Users/Kailyn Hogan/OneDrive - Iowa State University/Documents/GitHub/Housing/demographics analysis/Community Profile Datasets/Taxable_Property_Values_in_Iowa_by_Tax_District_and_Year.csv")
taxable.csv # The name of the city is stored in City.Name and is in uppercase.
# For the Census data, only the first letter of the city name is capitalized and " city, Iowa|, Iowa" is attached.
# Need to lowercase taxable property values City.Name and remove " city, Iowa|, Iowa" from housing and population data frames before joining them.
<- housing %>%
housing mutate(NAME = str_remove(NAME," city, Iowa|, Iowa"))
<- pop %>%
pop mutate(NAME = str_remove(NAME, " city, Iowa|, Iowa"))
<- taxable.csv %>%
taxable.csv mutate(City.Name = str_to_sentence(City.Name)) #str_to_sentence() uses regular sentence formatting where the first letter is capitalized.
# Could have also used str_to_titletext().
# Aggregate the sum of all columns and group by City.Name.
# Function is set to sum to get the sum of all values.
# na.rm = TRUE means the NAs get ignored when summing.
<- aggregate(Residential ~ City.Name, data = taxable.csv, FUN = sum, na.rm = TRUE)
residential <- aggregate(Ag.Land ~ City.Name, taxable.csv, FUN = sum, na.rm = TRUE)
ag_land <- aggregate(Ag.Building ~ City.Name, taxable.csv, FUN = sum, na.rm = TRUE)
ag_building <- aggregate(Commercial ~ City.Name, taxable.csv, FUN = sum, na.rm = TRUE)
commercial <- aggregate(Industrial ~ City.Name, taxable.csv, FUN = sum, na.rm = TRUE)
industrial # Join aggregated dataframes together to reform taxable property values data frame.
<- residential %>%
taxable_prop_values left_join(ag_land, by = "City.Name") %>%
left_join(ag_building, by = "City.Name") %>%
left_join(commercial, by = "City.Name") %>%
left_join(industrial, by = "City.Name")
head(taxable_property_values)
City.Name | Residential | Ag.Land | Ag.Building | Commercial | Industrial |
---|---|---|---|---|---|
57582069434 | 68289755861 | 3756099698 | 6892181005 | 9990249878 | |
Ackley | 59077903 | 1756505 | 61418 | 20369025 | 2143449 |
Ackworth | 10399627 | 403117 | 7779 | 67230 | 0 |
Adair | 1151067 | 715063 | 40676 | 5091781 | 195604 |
Adel | 257984582 | 2651441 | 27555 | 81299747 | 12757527 |
Afton | 24900696 | 138605 | 38906 | 7514181 | 1583244 |
I also download the LEHD Origin-Destination Employment Statistics (LODES) from the Census website as well. I downloaded the 2020 Residential Area Characteristics and the 2020 Workplace Area Characteristics. They are aggregated by census block. I downloaded the Geography crosswalk for IA as well. The geography is needed to associate the census block codes to their related places in Iowa.
Wednesday
Late on Wednesday, my team got more clarification from our boss, Chris, on what the AI Housing project actually is. From our conversation, I interpreted that our project is intended to produces a rapid, hands off, housing quality assessment for policy and grant decision makers.
## Median Age of Residents ##
# Getting the median age of all people in all places in Iowa from 2021 5-Year American Community Survey.
<- get_acs(geography = "place",
pop_age state = "IA",
year = 2021,
variable = c("med_age" = "B01002_001"),
output = "wide") %>%
mutate(NAME = str_remove(NAME, " city, Iowa|, Iowa"))
# Get the number of people under 18 and over 65 for all places in Iowa.
# The age data in the American Community Survey is separated by sex, so you will need to get the data for men and then women and combine the data frames.
<- get_acs(geography = "place",
male state = "IA",
year = 2021,
variable = c("under5" = "B01001_003", # Make sure to start the variable names with a letter.
"a5to9" = "B01001_004",
"a10to14" = "B01001_005",
"a15to17" = "B01001_006",
"a65to66" = "B01001_020",
"a67to69" = "B01001_021",
"a70to74" = "B01001_022",
"a75to79" = "B01001_023",
"a80to84" = "B01001_024",
"over85" = "B01001_025",
"total" = "B01001_002"),
output = "wide") %>%
mutate(NAME = str_remove(NAME, " city, Iowa|, Iowa"))
<- male %>%
male mutate(under18E = under5E + a5to9E + a10to14E + a15to17E) %>%
mutate(under18M = sqrt(under5M^2 + a5to9M^2 + a10to14M^2 + a15to17M^2)) %>%
#mutate(prc_under18E = under18E / totalE) %>%
#mutate(prc_under18M = moe_ratio(under18E, totalE, under18M, totalM)) %>%
mutate(over65E = a65to66E + a67to69E + a70to74E + a75to79E + a80to84E + over85E) %>%
mutate(over65M = sqrt(a65to66M^2 + a67to69M^2 + a70to74M^2 + a75to79M^2 + a80to84M^2 + over85M^2)) %>%
# mutate(prc_over65E = over65E / totalE) %>%
#mutate(prc_over65M = moe_ratio(over65E, totalE, over65M, totalM))
# Now do the same for the female age data.
<- get_acs(geography = "place",
female state = "IA",
year = 2021,
variable = c("under5" = "B01001_027",
"a5to9" = "B01001_028",
"a10to14" = "B01001_029",
"a15to17" = "B01001_030",
"a65to66" = "B01001_044",
"a67to69" = "B01001_045",
"a70to74" = "B01001_046",
"a75to79" = "B01001_047",
"a80to84" = "B01001_048",
"over85" = "B01001_049",
"total" = "B01001_026"),
output = "wide") %>%
mutate(NAME = str_remove(NAME, " city, Iowa|, Iowa"))
<- female %>%
female mutate(under18E = under5E + a5to9E + a10to14E + a15to17E) %>%
mutate(under18M = sqrt(under5M^2 + a5to9M^2 + a10to14M^2 + a15to17M^2)) %>%
#mutate(prc_under18E = under18E / totalE) %>%
#mutate(prc_under18M = moe_ratio(under18E, totalE, under18M, totalM)) %>%
mutate(over65E = a65to66E + a67to69E + a70to74E + a75to79E + a80to84E + over85E) %>%
mutate(over65M = sqrt(a65to66M^2 + a67to69M^2 + a70to74M^2 + a75to79M^2 + a80to84M^2 + over85M^2)) %>%
#mutate(prc_over65E = over65E / totalE) %>%
#mutate(prc_over65M = moe_ratio(over65E, totalE, over65M, totalM))
# Combine the data frames.
<- female %>%
age bind_rows(male)
# Aggregate the data by NAME.
# I am using a different aggregation format here by using the summary() function.
# This will produce a separate dataframe with just under18E, under18M, over65E, over65M, prc_under18E, prc_under18M, prc_over65E, and prc_over65M.
<- age %>%
aggregated_age group_by(NAME) %>%
summarize(under18E = sum(under18E),
under18M = sqrt(sum(under18M^2)),
over65E = sum(over65E),
over65M = sqrt(sum(over65M)),
prc_under18E = sum(under18E)/sum(totalE),
prc_under18M = sqrt(sum(under18M^2) / sum(totalE)^2 + (sum(under18E)^2 * sum(totalM^2)) / sum(totalE)^4),
prc_over65E = sum(over65E)/sum(totalE),
prc_over65M = sqrt(sum(over65M^2) / sum(totalE)^2 + (sum(over65E)^2 * sum(totalM^2)) / sum(totalE)^4))
# Add a column that states whether a place is "aged", "stable" or "young."
# Using a 2% difference to gauge a stable population.
# Aged population has a less than -2% difference between the percent under 18 and the percent over 65.
# Young population has a greater than 2% difference between the percent under 18 and the percent over 65.
<- aggregated_age %>%
aggregated_age mutate(age_label = ifelse(prc_under18E - prc_over65E > .02, "Young",
ifelse(prc_under18E - prc_over65E < -.02, "Aging", "Stable")))
## Add the age data to the population dataframe.
<- pop %>%
pop left_join(aggregated_age,by = c("NAME")) %>%
left_join(pop_age, by = c("GEOID","NAME"))
head(aggregated_age)
NAME | under18E | under18M | over65E | over65M | prc_under18E | prc_under18M | prc_over65E | prc_over65M | age_label |
---|---|---|---|---|---|---|---|---|---|
Ackley | 402 | 68.39591 | 349 | 9.030714 | 0.23563892 | 0.044036378 | 0.20457210 | 0.0166781814 | Young |
Ackworth | 50 | 26.47640 | 24 | 6.256889 | 0.33783784 | 0.212313083 | 0.16216216 | 0.0692779288 | Young |
Adair | 206 | 67.47592 | 144 | 7.692109 | 0.24065421 | 0.088939653 | 0.16822430 | 0.0301622637 | Young |
Adel | 1708 | 285.81987 | 661 | 14.821549 | 0.29111982 | 0.050896612 | 0.11266405 | 0.0062375436 | Young |
Afton | 208 | 60.94260 | 189 | 8.606830 | 0.22757112 | 0.073795265 | 0.20678337 | 0.0302370669 | Young |
library(tidyverse)
## Unemployment ##
# Getting unemployment data from the 2021 5-Year American Community Survey.
# Get the total number of people in the workforce and the total number of the labor force that is unemployed.
# Calculate the percent of the workforce that is unemployed.
<- get_acs(state = "IA",
unemployment geography = "place",
year = 2021,
variable = c("total_workforce" = "B23025_003",
"unemployed" = "B23025_005"),
output = "wide") %>%
mutate(prc_unemployed = unemployedE / total_workforceE,
unemployed_moe = moe_ratio(unemployedE, total_workforceE, unemployedM, total_workforceM)) %>%
mutate(NAME = str_remove(NAME," city, Iowa|, Iowa"))
head(unemployment)
GEOID | NAME | total_workforceE | total_workforceM | unemployedE | unemployedM | prc_unemplyed | unemployed_moe |
---|---|---|---|---|---|---|---|
1900190 | Ackley | 828 | 88 | 25 | 17 | 0.030193237 | 0.020780658 |
1900235 | Ackworth | 73 | 39 | 6 | 9 | 0.082191781 | 0.130873976 |
1900370 | Adair | 440 | 101 | 25 | 25 | 0.056818182 | 0.058295873 |
1900505 | Adel | 3125 | 245 | 127 | 93 | 0.040640000 | 0.029930074 |
1900595 | Afton | 480 | 100 | 42 | 31 | 0.087500000 | 0.067106702 |
## Commuting ##
library(tidyverse)
library(tidycensus)
# Getting commute data from the 2021 5-Year American Community Survey.
# Get the total number of people available for commute data and the total number of people commuting to work.
# Calculate the percent of people commuting to work.
<- get_acs(geography = "place",
prc_travel state = "IA",
variable = c("total" = "B08008_001",
"travel" = "B08008_004"),
year = 2021,
output = "wide") %>%
mutate(prc_travel = travelE / totalE,
travel_moe = (moe_ratio(travelE, totalE, travelM, totalM))) %>%
mutate(NAME = str_remove(NAME, " city, Iowa|, Iowa"))
head(prc_travel)
GEOID | NAME | totalE | totalM | travelE | travelM | prc_travel | travel_moe |
---|---|---|---|---|---|---|---|
1900190 | Ackley | 797 | 85 | 534 | 83 | 0.6700125 | 0.12629855 |
1900235 | Ackworth | 67 | 38 | 64 | 39 | 0.9552239 | 0.79519912 |
1900370 | Adair | 412 | 93 | 230 | 57 | 0.5582524 | 0.18713615 |
1900505 | Adel | 2924 | 229 | 2216 | 263 | 0.7578659 | 0.10776390 |
1900595 | Afton | 434 | 90 | 319 | 77 | 0.7350230 | 0.23390328 |
When I was working on the demographic analysis on Wednesday, I took a break to do some more research on demographic analyses in general. I found this link on my project leader’s, Liesl Eathington, ISU webpage.
The link is to a local news article that Liesl was interviewed for talking about the characteristics of thriving rural, small towns. The article also talked about some demographic analysis that was done on rural communities for grant purposes. Through this analysis, the researchers discovered that it was key to analyze housing, income, and jobs in a community to understand it. The researchers also found that an indicator of a declining small town is deteriorating infrastructure like streets and sewers.
Small towns that are thriving have one or more of the following characteristics:
close healthcare
local day care options
local grocery store
local utilities
local restaurants
local shops
local school(s)
Knowing this information will help me finish the demographic analysis of Iowa’s communities. I want to see if I can find available data on infrastructure conditions to identify communities potentially in need of our AI Model.
Thursday
My group spent all morning working on our team’s teaser video. I worked on this blog and this week’s team blog when I had breaks from that. The team blog can be found on this blog and on the 2023 DSPG blog.
I compiled the data I currently have for the demographic analysis into a larger data frame called “iowa.” I used the function write.csv() to create a CSV file from the “iowa” dataframe. This still needs updated because I am not done working with the WAC and RAC data, but it is a starting point. Later, I will be putting this CSV file into Tableau to visualize the data.
library(tidyverse)
# Name of aggregated database.
iowa
<- pop %>%
iowa left_join(housing, by = c("GEOID","NAME")) %>%
left_join(taxable_prop_values, by = "NAME") %>%
left_join(unemployment, by = c("GEOID","NAME")) %>%
left_join(prc_travel, by = c("GEOID","NAME"))
# Export as CSV.
write.csv(iowa, "analysing_iowa_communities.csv", row.names = FALSE)
# Read the CSV file.
<- read.csv("C:/Users/Kailyn Hogan/OneDrive - Iowa State University/Documents/GitHub/Housing/demographics analysis/analysing_iowa_communities.csv")
data
# Display the contents of the CSV file.
::kable(head(arrange(data, NAME))) knitr
GEOID | NAME | pop20 | pop10 | pop00 | prc_change | change_label | under18E | under18M | over65E | over65M | prc_under18E | prc_under18M | prc_over65E | prc_over65M | age_label | med_ageE | med_ageM | total_unitsE | total_unitsM | occupied_unitsE | occupied_unitsM | vacant_unitsE | vacant_unitsM | owner_occupiedE | owner_occupiedM | renter_occupiedE | renter_occupiedM | median_house_valueE | median_house_valueM | median_year_builtE | median_year_builtM | median_house_ageE | median_house_ageM | home_ownership_rateE | home_ownership_rateM | vacancy_rateE | vacancy_rateM | rental_rateE | rental_rateM | Residential | Ag.Land | Ag.Building | Commercial | Industrial | total_workforceE | total_workforceM | unemployedE | unemployedM | prc_unemployed | unemployed_moe | totalE | totalM | travelE | travelM | prc_travel | travel_moe |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1900190 | Ackley | 1599 | 1589 | 1809 | -0.1313321 | Shrinking | 402 | 68.39591 | 349 | 9.030714 | 0.2356389 | 0.0440364 | 0.2045721 | 0.0166782 | Young | 41.5 | 3.0 | 800 | 71 | 705 | 69 | 95 | 39 | 553 | 59 | 152 | 48 | 705 | 69 | 1955 | 5 | 68 | 5 | 0.7843972 | 0.1135668 | 0.1187500 | 0.0498762 | 0.2156028 | 0.0712801 | 59077903 | 1756505 | 61418 | 20369025 | 2143449 | 828 | 88 | 25 | 17 | 0.0301932 | 0.0207807 | 797 | 85 | 534 | 83 | 0.6700125 | 0.1262985 |
1900235 | Ackworth | 115 | 83 | 85 | 0.2608696 | Growing | 50 | 26.47640 | 24 | 6.256889 | 0.3378378 | 0.2123131 | 0.1621622 | 0.0692779 | Young | 38.1 | 30.8 | 47 | 20 | 47 | 20 | 0 | 10 | 35 | 17 | 12 | 11 | 47 | 20 | 1999 | 11 | 24 | 11 | 0.7446809 | 0.4808792 | 0.0000000 | 0.2127660 | 0.2553191 | 0.2580309 | 10399627 | 403117 | 7779 | 67230 | 0 | 73 | 39 | 6 | 9 | 0.0821918 | 0.1308740 | 67 | 38 | 64 | 39 | 0.9552239 | 0.7951991 |
1900370 | Adair | 791 | 781 | 839 | -0.0606827 | Shrinking | 206 | 67.47592 | 144 | 7.692109 | 0.2406542 | 0.0889397 | 0.1682243 | 0.0301623 | Young | 37.7 | 8.6 | 384 | 60 | 344 | 59 | 40 | 27 | 207 | 44 | 137 | 44 | 344 | 59 | 1960 | 8 | 63 | 8 | 0.6017442 | 0.1643524 | 0.1041667 | 0.0721717 | 0.3982558 | 0.1450029 | 1151067 | 715063 | 40676 | 5091781 | 195604 | 440 | 101 | 25 | 25 | 0.0568182 | 0.0582959 | 412 | 93 | 230 | 57 | 0.5582524 | 0.1871361 |
1900505 | Adel | 6153 | 3682 | 3435 | 0.4417357 | Growing | 1708 | 285.81987 | 661 | 14.821549 | 0.2911198 | 0.0508966 | 0.1126641 | 0.0062375 | Young | 36.8 | 1.5 | 2312 | 151 | 2234 | 120 | 78 | 97 | 1548 | 171 | 686 | 157 | 2234 | 120 | 1978 | 7 | 45 | 7 | 0.6929275 | 0.0851142 | 0.0337370 | 0.0420128 | 0.3070725 | 0.0721873 | 257984582 | 2651441 | 27555 | 81299747 | 12757527 | 3125 | 245 | 127 | 93 | 0.0406400 | 0.0299301 | 2924 | 229 | 2216 | 263 | 0.7578659 | 0.1077639 |
1900595 | Afton | 874 | 845 | 917 | -0.0491991 | Shrinking | 208 | 60.94260 | 189 | 8.606830 | 0.2275711 | 0.0737953 | 0.2067834 | 0.0302371 | Young | 39.0 | 9.2 | 382 | 56 | 357 | 53 | 25 | 16 | 251 | 40 | 106 | 36 | 357 | 53 | 1962 | 3 | 61 | 3 | 0.7030812 | 0.1531307 | 0.0654450 | 0.0429696 | 0.2969188 | 0.1100539 | 24900696 | 138605 | 38906 | 7514181 | 1583244 | 480 | 100 | 42 | 31 | 0.0875000 | 0.0671067 | 434 | 90 | 319 | 77 | 0.7350230 | 0.2339033 |
1900640 | Agency | 620 | 638 | 622 | -0.0032258 | Stable | 71 | 29.79933 | 123 | 6.383032 | 0.1501057 | 0.0678777 | 0.2600423 | 0.0458014 | Aging | 49.6 | 10.8 | 233 | 41 | 211 | 38 | 22 | 22 | 154 | 29 | 57 | 25 | 211 | 38 | 1959 | 6 | 64 | 6 | 0.7298578 | 0.1901772 | 0.0944206 | 0.0958713 | 0.2701422 | 0.1280830 | 82024799 | 119286 | 70 | 2742290 | 2872782 | 240 | 63 | 7 | 7 | 0.0291667 | 0.0301548 | 232 | 63 | 219 | 63 | 0.9439655 | 0.3734276 |
Friday
On Friday, I gave the weekly wrap up presentation.