Indiana’s 1.03 million public school students. 19 years of enrollment. ILEARN and ISTEP+ assessments. School directory. One function call.
Part of the njschooldata family of state education data packages.
Full documentation – all 30 stories with charts, getting-started guide, and complete function reference.
Highlights
library(inschooldata)
library(ggplot2)
library(dplyr)
library(scales)
enr <- fetch_enr_multi(2015:2024, use_cache = TRUE)
enr_long <- fetch_enr_multi(c(2006, 2011, 2016, 2021, 2024), use_cache = TRUE)
enr_current <- fetch_enr(2024, use_cache = TRUE)1. Gary lost 73% of its students since 2006
Gary Community School Corp went from 15,119 students in 2006 to just 4,025 in 2024, one of the steepest enrollment declines of any school district in America.
gary <- enr_long %>%
filter(is_corporation, grepl("Gary Community", corporation_name, ignore.case = TRUE),
subgroup == "total_enrollment", grade_level == "TOTAL")
gary %>% select(end_year, corporation_name, n_students)
#> # A tibble: 5 x 3
#> end_year corporation_name n_students
#> <dbl> <chr> <dbl>
#> 1 2006 Gary Community School Corp 15119
#> 2 2011 Gary Community School Corp 11161
#> 3 2016 Gary Community School Corp 6480
#> 4 2021 Gary Community School Corp 4770
#> 5 2024 Gary Community School Corp 4025
2. Math proficiency collapses in middle school
Grade 3 Math proficiency starts at 52% but falls to just 31% by Grade 8. ELA is more stable across grades. The Math decline suggests cumulative skill gaps that compound over time.
library(tidyr)
# Get available assessment years
years_info <- get_available_assessment_years()
available_years <- years_info$years
# Fetch recent years of data (corporation level to reduce load)
recent_years <- available_years[available_years >= 2019]
assess_multi <- fetch_assessment_multi(recent_years, level = "corporation", use_cache = TRUE)
# Get current year data (2024 for reliable data)
current_year <- 2024
assess_current <- fetch_assessment(current_year, level = "corporation", use_cache = TRUE)
grade_prof <- assess_current %>%
filter(subject %in% c("ELA", "Math"),
grade %in% c("3", "4", "5", "6", "7", "8"),
proficiency_level %in% c("proficient", "total_tested")) %>%
pivot_wider(id_cols = c(corporation_id, subject, grade),
names_from = proficiency_level,
values_from = value) %>%
group_by(subject, grade) %>%
summarize(proficient = sum(proficient, na.rm = TRUE),
tested = sum(total_tested, na.rm = TRUE),
.groups = "drop") %>%
mutate(pct = proficient / tested * 100)
grade_prof %>% select(subject, grade, pct)
#> # A tibble: 12 x 3
#> subject grade pct
#> <chr> <chr> <dbl>
#> 1 ELA 3 38.3
#> 2 ELA 4 41.5
#> 3 ELA 5 40.0
#> 4 ELA 6 40.8
#> 5 ELA 7 41.4
#> 6 ELA 8 42.2
#> 7 Math 3 52.1
#> 8 Math 4 47.8
#> 9 Math 5 40.7
#> 10 Math 6 37.9
#> 11 Math 7 33.6
#> 12 Math 8 31.2
3. Hispanic enrollment has more than doubled
Hispanic students grew from 5.8% to 14.6% of enrollment since 2006, a 2.5x increase. Northwest Indiana and Indianapolis drive this demographic shift.
hispanic <- enr_long %>%
filter(is_state, grade_level == "TOTAL", subgroup == "hispanic")
hispanic %>% select(end_year, n_students, pct) %>%
mutate(pct_display = round(pct * 100, 1))
#> # A tibble: 5 x 4
#> end_year n_students pct pct_display
#> <dbl> <dbl> <dbl> <dbl>
#> 1 2006 62718 0.058 5.8
#> 2 2011 87790 0.084 8.4
#> 3 2016 116671 0.111 11.1
#> 4 2021 135497 0.131 13.1
#> 5 2024 151031 0.146 14.6
Data Taxonomy
| Category | Years | Function | Details |
|---|---|---|---|
| Enrollment | 2006-2024 |
fetch_enr() / fetch_enr_multi()
|
State, corporation, school. Race, gender, FRPL, SpEd, LEP |
| Assessments | 2014-2025 |
fetch_assessment() / fetch_assessment_multi()
|
Corporation, school. ELA, Math, Science, Social Studies. ILEARN (2019+) / ISTEP+ (2014-2018) |
| Graduation | – | – | Not yet available |
| Directory | 2025-2026 | fetch_directory() |
Corporation, school, non-public. Address, phone, grades served |
| Per-Pupil Spending | – | – | Not yet available |
| Accountability | – | – | Not yet available |
| Chronic Absence | – | – | Not yet available |
| EL Progress | – | – | Not yet available |
| Special Ed | – | – | Not yet available |
See the full data category taxonomy for what each category covers.
Quick Start
R
# install.packages("remotes")
remotes::install_github("almartin82/inschooldata")
library(inschooldata)
library(dplyr)
# Fetch one year
enr_2024 <- fetch_enr(2024)
# Fetch multiple years
enr_recent <- fetch_enr_multi(2020:2024)
# State totals
enr_2024 %>%
filter(is_state, subgroup == "total_enrollment", grade_level == "TOTAL")
# Fetch assessment data (ILEARN)
assess_2024 <- fetch_assessment(2024, level = "corporation")Explore More
Full analysis with 30 stories: - Enrollment trends – 15 stories - Assessment trends – 15 stories - Function reference
Data Notes
Source: Indiana Department of Education Data Center: https://www.in.gov/doe/it/data-center-and-reports/
Available Years: - Enrollment: 2006-2024 (19 years) - Assessment: 2014-2025 (ISTEP+ 2014-2018, ILEARN 2019-2025; no 2020 due to COVID waiver) - Directory: 2025-2026
Suppression: Counts fewer than 10 are suppressed with “*” and reported as NA.
Census Day: October 1 (ADM – Average Daily Membership).
Notes: Indiana calls its districts “corporations” (school corporations). Corporation IDs are 4 digits (e.g., 5385 for Indianapolis Public Schools).
Deeper Dive
4. Indiana lost 55,000 students since 2006
Indiana enrollment peaked above 1.08 million in 2006 and has steadily declined to just over 1.03 million. The state lost about 5% of its public school enrollment over two decades.
state_trend <- enr %>%
filter(is_state, grade_level == "TOTAL", subgroup == "total_enrollment")
state_trend %>% select(end_year, n_students)
#> # A tibble: 10 x 2
#> end_year n_students
#> <dbl> <dbl>
#> 1 2015 1006766
#> 2 2016 1046527
#> 3 2017 1049292
#> 4 2018 1053809
#> 5 2019 1055354
#> 6 2020 1051051
#> 7 2021 1033781
#> 8 2022 1036697
#> 9 2023 1036123
#> 10 2024 1032724
5. Indianapolis Public Schools has lost over 15,000 students
IPS enrollment dropped from 37,554 in 2006 to under 22,000 by 2024 – a 42% decline. Charter schools and suburban flight continue to reshape Indianapolis education.
ips <- enr_long %>%
filter(is_corporation, grepl("Indianapolis Public Schools", corporation_name),
subgroup == "total_enrollment", grade_level == "TOTAL")
ips %>% select(end_year, corporation_name, n_students)
#> # A tibble: 5 x 3
#> end_year corporation_name n_students
#> <dbl> <chr> <dbl>
#> 1 2006 Indianapolis Public Schools 37554
#> 2 2011 Indianapolis Public Schools 33080
#> 3 2016 Indianapolis Public Schools 29583
#> 4 2021 Indianapolis Public Schools 22930
#> 5 2024 Indianapolis Public Schools 21858
6. Hamilton County added 16,000 students since 2006
Carmel, Fishers, Westfield, and Noblesville suburbs are booming. These four Hamilton County corporations grew from about 42,000 to nearly 58,000 students – a 38% increase.
hamilton <- c("Carmel Clay Schools", "Hamilton Southeastern Schools",
"Noblesville Schools", "Westfield-Washington Schools")
hamilton_trend <- enr %>%
filter(corporation_name %in% hamilton, is_corporation,
grade_level == "TOTAL", subgroup == "total_enrollment") %>%
group_by(end_year) %>%
summarize(total = sum(n_students, na.rm = TRUE), .groups = "drop")
hamilton_trend
#> # A tibble: 10 x 2
#> end_year total
#> <dbl> <dbl>
#> 1 2015 53656
#> 2 2016 54457
#> 3 2017 55465
#> 4 2018 56306
#> 5 2019 56681
#> 6 2020 57958
#> 7 2021 57117
#> 8 2022 57281
#> 9 2023 57442
#> 10 2024 57687
7. COVID erased 5,600 kindergartners in one year
Indiana kindergarten enrollment dropped from 78,649 in 2020 to 72,993 in 2021 – a loss of nearly 5,700 students. Recovery has been uneven.
k_trend <- enr %>%
filter(is_state, subgroup == "total_enrollment",
grade_level %in% c("K", "01", "06", "12")) %>%
mutate(grade_label = case_when(
grade_level == "K" ~ "Kindergarten",
grade_level == "01" ~ "Grade 1",
grade_level == "06" ~ "Grade 6",
grade_level == "12" ~ "Grade 12"
))
k_trend %>%
filter(grade_level == "K") %>%
select(end_year, n_students)
#> # A tibble: 10 x 2
#> end_year n_students
#> <dbl> <dbl>
#> 1 2015 76000
#> 2 2016 77038
#> 3 2017 76870
#> 4 2018 77905
#> 5 2019 75746
#> 6 2020 78649
#> 7 2021 72993
#> 8 2022 76514
#> 9 2023 74124
#> 10 2024 72955
8. White enrollment dropped 15 points while Hispanic surged
Indiana’s racial composition shifted dramatically since 2006. White students went from 78% to 63% while Hispanic students rose from 6% to 15%. Black enrollment has been comparatively stable.
race_trend <- enr_long %>%
filter(is_state, grade_level == "TOTAL", subgroup %in% c("black", "hispanic", "white")) %>%
mutate(subgroup = factor(subgroup, levels = c("white", "black", "hispanic"),
labels = c("White", "Black", "Hispanic")))
race_trend %>%
select(end_year, subgroup, pct) %>%
mutate(pct = round(pct * 100, 1))
#> # A tibble: 15 x 3
#> end_year subgroup pct
#> <dbl> <fct> <dbl>
#> 1 2006 White 78.0
#> 2 2006 Black 11.5
#> 3 2006 Hispanic 5.8
#> 4 2011 White 73.1
#> 5 2011 Black 12.1
#> 6 2011 Hispanic 8.4
#> 7 2016 White 69.3
#> 8 2016 Black 12.4
#> 9 2016 Hispanic 11.1
#> 10 2021 White 65.8
#> 11 2021 Black 12.9
#> 12 2021 Hispanic 13.1
#> 13 2024 White 63.2
#> 14 2024 Black 13.4
#> 15 2024 Hispanic 14.6
9. Indiana Connections Academy is the largest virtual school
Indiana Connections Academy serves over 5,400 students, making it by far the largest virtual school in the state.
virtual <- enr_current %>%
filter(grepl("Virtual|Online|Connections|Digital", corporation_name, ignore.case = TRUE),
grade_level == "TOTAL", subgroup == "total_enrollment") %>%
distinct(corporation_name, .keep_all = TRUE) %>%
arrange(desc(n_students)) %>%
head(10) %>%
mutate(corp_label = reorder(corporation_name, n_students))
virtual %>% select(corporation_name, n_students)
#> # A tibble: 4 x 2
#> corporation_name n_students
#> <chr> <dbl>
#> 1 Indiana Connections Academy 5475
#> 2 Indiana Connections Career Academy 724
#> 3 Phalen Virtual Leadership Academy 289
#> 4 Paramount Online Academy 194
10. Evansville is slowly losing students
Evansville Vanderburgh School Corp peaked around 22,800 and has gradually declined to about 21,400 – a modest but steady loss of about 5% over the past decade.
evansville <- enr %>%
filter(is_corporation, grepl("Evansville Vanderburgh", corporation_name, ignore.case = TRUE),
subgroup == "total_enrollment", grade_level == "TOTAL")
evansville %>% select(end_year, corporation_name, n_students)
#> # A tibble: 10 x 3
#> end_year corporation_name n_students
#> <dbl> <chr> <dbl>
#> 1 2015 Evansville Vanderburgh Sch Corp 22474
#> 2 2016 Evansville Vanderburgh Sch Corp 22799
#> 3 2017 Evansville Vanderburgh School Corp 22801
#> 4 2018 Evansville Vanderburgh School Corp 22844
#> 5 2019 Evansville Vanderburgh School Corp 22601
#> 6 2020 Evansville Vanderburgh School Corp 22822
#> 7 2021 Evansville Vanderburgh School Corp 22192
#> 8 2022 Evansville Vanderburgh School Corp 21942
#> 9 2023 Evansville Vanderburgh School Corp 21741
#> 10 2024 Evansville Vanderburgh School Corp 21442
11. Indiana’s school system has grown more fragmented
Indiana went from 330 corporations in 2006 to 418 in 2024. Rather than consolidating, the state has added charter schools and virtual academies that count as new corporations.
corp_counts <- enr_long %>%
filter(is_corporation, subgroup == "total_enrollment", grade_level == "TOTAL") %>%
group_by(end_year) %>%
summarize(n_corporations = n(), .groups = "drop")
corp_counts
#> # A tibble: 5 x 2
#> end_year n_corporations
#> <dbl> <int>
#> 1 2006 330
#> 2 2011 357
#> 3 2016 386
#> 4 2021 406
#> 5 2024 418
12. Fort Wayne is Indiana’s largest district at 28,500 students
Fort Wayne Community Schools is the largest district in Indiana with about 28,500 students, edging out Indianapolis Public Schools which has fallen to around 21,900.
fort_wayne <- enr %>%
filter(is_corporation, grepl("Fort Wayne Community", corporation_name, ignore.case = TRUE),
subgroup == "total_enrollment", grade_level == "TOTAL")
fort_wayne %>% select(end_year, corporation_name, n_students)
#> # A tibble: 10 x 3
#> end_year corporation_name n_students
#> <dbl> <chr> <dbl>
#> 1 2015 Fort Wayne Community Schools 30429
#> 2 2016 Fort Wayne Community Schools 29483
#> 3 2017 Fort Wayne Community Schools 29377
#> 4 2018 Fort Wayne Community Schools 29469
#> 5 2019 Fort Wayne Community Schools 29404
#> 6 2020 Fort Wayne Community Schools 29486
#> 7 2021 Fort Wayne Community Schools 28460
#> 8 2022 Fort Wayne Community Schools 28778
#> 9 2023 Fort Wayne Community Schools 28613
#> 10 2024 Fort Wayne Community Schools 28504
13. Black enrollment share has risen slightly since 2006
Despite a common misconception, Indiana’s Black student share has actually edged up from 11.5% in 2006 to 13.4% in 2024, while Black student counts grew from 125,000 to 138,000.
black_trend <- enr_long %>%
filter(is_state, grade_level == "TOTAL", subgroup == "black")
black_trend %>% select(end_year, n_students, pct) %>%
mutate(pct_display = round(pct * 100, 1))
#> # A tibble: 5 x 4
#> end_year n_students pct pct_display
#> <dbl> <dbl> <dbl> <dbl>
#> 1 2006 125305 0.115 11.5
#> 2 2011 126350 0.121 12.1
#> 3 2016 129809 0.124 12.4
#> 4 2021 132917 0.129 12.9
#> 5 2024 137884 0.134 13.4
14. South Bend has lost a third of its students
South Bend Community School Corp went from nearly 21,900 students in 2006 to about 14,500 in 2024 – a loss of 34%.
south_bend <- enr_long %>%
filter(is_corporation, grepl("South Bend Community", corporation_name, ignore.case = TRUE),
subgroup == "total_enrollment", grade_level == "TOTAL")
south_bend %>% select(end_year, corporation_name, n_students)
#> # A tibble: 5 x 3
#> end_year corporation_name n_students
#> <dbl> <chr> <dbl>
#> 1 2006 South Bend Community Sch Corp 21861
#> 2 2011 South Bend Community Sch Corp 19948
#> 3 2016 South Bend Community Sch Corp 18680
#> 4 2021 South Bend Community School Corp 16302
#> 5 2024 South Bend Community School Corp 14484
15. Asian students are the fastest-growing demographic in percentage terms
Asian enrollment went from 1.6% to 3.0% of Indiana’s total since 2011. While a smaller population than Hispanic growth, it represents a near-doubling in share.
asian_trend <- enr_long %>%
filter(is_state, grade_level == "TOTAL", subgroup == "asian")
asian_trend %>% select(end_year, n_students, pct) %>%
mutate(pct_display = round(pct * 100, 1))
#> # A tibble: 5 x 4
#> end_year n_students pct pct_display
#> <dbl> <dbl> <dbl> <dbl>
#> 1 2006 0 0.000 0.0
#> 2 2011 16970 0.016 1.6
#> 3 2016 22519 0.022 2.2
#> 4 2021 28265 0.027 2.7
#> 5 2024 31203 0.030 3.0
16. The top 20 corporations serve 29% of all students
The 20 largest corporations educate nearly 300,000 of Indiana’s 1.03 million students. Fort Wayne, Indianapolis, and Evansville lead the pack.
top_corps <- enr_current %>%
filter(is_corporation, grade_level == "TOTAL", subgroup == "total_enrollment") %>%
arrange(desc(n_students)) %>%
head(20) %>%
mutate(corp_label = reorder(corporation_name, n_students))
top_corps %>% select(corporation_name, n_students)
#> # A tibble: 20 x 2
#> corporation_name n_students
#> <chr> <dbl>
#> 1 Fort Wayne Community Schools 28504
#> 2 Indianapolis Public Schools 21858
#> 3 Evansville Vanderburgh School Corp 21442
#> 4 Hamilton Southeastern Schools 21299
#> 5 MSD Lawrence Township 16502
#> 6 Carmel Clay Schools 16116
#> 7 Perry Township Schools 16044
#> 8 MSD Wayne Township 15798
#> 9 South Bend Community School Corp 14484
#> 10 Tippecanoe School Corp 13526
17. Only 41% of Indiana students are proficient in ELA
Despite years of reform efforts, fewer than half of Indiana students demonstrate proficiency in English/Language Arts. The state faces a significant literacy challenge.
ela_state <- assess_current %>%
filter(subject == "ELA", grade == "All") %>%
group_by(proficiency_level) %>%
summarize(total = sum(value, na.rm = TRUE), .groups = "drop") %>%
filter(proficiency_level %in% c("total_tested", "proficient"))
state_ela_pct <- ela_state$total[ela_state$proficiency_level == "proficient"] /
ela_state$total[ela_state$proficiency_level == "total_tested"] * 100
cat("Statewide ELA Proficiency:", round(state_ela_pct, 1), "%\n")
#> Statewide ELA Proficiency: 40.7 %
18. Math proficiency is nearly identical to ELA
Math and ELA proficiency rates are nearly identical at about 41% statewide. Both subjects show a majority of students falling short of grade-level expectations.
math_state <- assess_current %>%
filter(subject == "Math", grade == "All") %>%
group_by(proficiency_level) %>%
summarize(total = sum(value, na.rm = TRUE), .groups = "drop") %>%
filter(proficiency_level %in% c("total_tested", "proficient"))
state_math_pct <- math_state$total[math_state$proficiency_level == "proficient"] /
math_state$total[math_state$proficiency_level == "total_tested"] * 100
cat("Statewide Math Proficiency:", round(state_math_pct, 1), "%\n")
#> Statewide Math Proficiency: 40.5 %
19. Fort Wayne proficiency is 12 points below state average
Fort Wayne Community Schools, Indiana’s largest district, has ELA proficiency rates well below the state average, reflecting the challenges facing urban districts.
fw_ela <- assess_current %>%
filter(corporation_id == "0235", subject == "ELA", grade == "All",
proficiency_level %in% c("proficient", "total_tested")) %>%
pivot_wider(names_from = proficiency_level, values_from = value) %>%
summarize(proficient = sum(proficient, na.rm = TRUE),
tested = sum(total_tested, na.rm = TRUE)) %>%
mutate(pct = proficient / tested * 100)
cat("Fort Wayne ELA Proficiency:", round(fw_ela$pct, 1), "%\n")
cat("Difference from state:", round(fw_ela$pct - state_ela_pct, 1), "percentage points\n")
#> Fort Wayne ELA Proficiency: 28.8 %
#> Difference from state: -11.9 percentage points20. Carmel leads Indiana with nearly 70% proficiency
Carmel Clay Schools consistently posts the highest proficiency rates among large districts in Indiana. Nearly 70% of Carmel students are proficient in both ELA and Math.
carmel <- assess_current %>%
filter(grepl("Carmel Clay", corporation_name, ignore.case = TRUE),
grade == "All",
subject %in% c("ELA", "Math"),
proficiency_level %in% c("proficient", "total_tested")) %>%
pivot_wider(id_cols = subject, names_from = proficiency_level, values_from = value) %>%
mutate(pct = proficient / total_tested * 100)
cat("Carmel Clay Schools Proficiency:\n")
print(carmel[, c("subject", "pct")])
#> Carmel Clay Schools Proficiency:
#> # A tibble: 2 x 2
#> subject pct
#> <chr> <dbl>
#> 1 ELA 69.6
#> 2 Math 70.921. The urban-suburban gap exceeds 40 percentage points
The gap between suburban Carmel (70% proficiency) and urban Indianapolis (21% proficiency) is nearly 50 percentage points in ELA. Indiana has one of the largest urban-suburban achievement gaps in the Midwest.
urban_suburban <- assess_current %>%
filter(
(corporation_id == "5385" |
corporation_id == "0235" |
grepl("Carmel Clay", corporation_name, ignore.case = TRUE) |
grepl("Hamilton Southeastern", corporation_name, ignore.case = TRUE)),
subject == "ELA", grade == "All",
proficiency_level %in% c("proficient", "total_tested")) %>%
pivot_wider(id_cols = corporation_name, names_from = proficiency_level, values_from = value) %>%
mutate(pct = proficient / total_tested * 100) %>%
arrange(desc(pct))
print(urban_suburban[, c("corporation_name", "pct")])
#> # A tibble: 4 x 2
#> corporation_name pct
#> <chr> <dbl>
#> 1 Carmel Clay Schools 69.6
#> 2 Hamilton Southeastern Schools 61.2
#> 3 Fort Wayne Community Schools 28.8
#> 4 Indianapolis Public Schools 20.722. Indianapolis has the lowest proficiency among large districts
Indianapolis Public Schools has the lowest proficiency rates among Indiana’s largest districts, with just 21% of students proficient in ELA.
large_districts <- assess_current %>%
filter(subject == "ELA", grade == "All",
proficiency_level %in% c("proficient", "total_tested")) %>%
pivot_wider(id_cols = c(corporation_id, corporation_name),
names_from = proficiency_level, values_from = value) %>%
filter(!is.na(proficient), !is.na(total_tested), total_tested > 5000) %>%
mutate(pct = proficient / total_tested * 100) %>%
arrange(desc(total_tested)) %>%
head(10)
large_districts %>% select(corporation_name, total_tested, pct)
#> # A tibble: 10 x 3
#> corporation_name total_tested pct
#> <chr> <dbl> <dbl>
#> 1 Fort Wayne Community Schools 12282 28.8
#> 2 Indianapolis Public Schools 9942 20.7
#> 3 Archdiocese of Indianapolis 9547 60.3
#> 4 Evansville Vanderburgh School Corp 9539 37.2
#> 5 Hamilton Southeastern Schools 9508 61.2
#> 6 Carmel Clay Schools 7478 69.6
#> 7 Perry Township Schools 7441 38.9
#> 8 MSD Lawrence Township 7136 27.1
#> 9 MSD Wayne Township 6888 21.2
#> 10 Tippecanoe School Corp 6257 46.7
23. Proficiency crashed after COVID and has not recovered
Proficiency was near 48% in the first ILEARN year (2019), then dropped to 37-40% after the COVID disruption in 2020. Rates have remained flat since 2021.
if (length(recent_years) > 1) {
trend <- assess_multi %>%
filter(subject %in% c("ELA", "Math"), grade == "All",
proficiency_level %in% c("proficient", "total_tested")) %>%
group_by(end_year, subject, proficiency_level) %>%
summarize(total = sum(value, na.rm = TRUE), .groups = "drop") %>%
pivot_wider(names_from = proficiency_level, values_from = total) %>%
mutate(pct = proficient / total_tested * 100)
trend %>% select(end_year, subject, pct)
}
#> # A tibble: 12 x 3
#> end_year subject pct
#> <int> <chr> <dbl>
#> 1 2019 ELA 48.4
#> 2 2019 Math 48.5
#> 3 2021 ELA 40.2
#> 4 2021 Math 36.7
#> 5 2022 ELA 41.0
#> 6 2022 Math 39.3
#> 7 2023 ELA 40.4
#> 8 2023 Math 40.7
#> 9 2024 ELA 40.7
#> 10 2024 Math 40.5
#> 11 2025 ELA 40.3
#> 12 2025 Math 41.9
24. Over 36% of students score Below Proficiency
More than a third of Indiana students score Below Proficiency – the lowest level – in both ELA and Math. These students are significantly behind grade-level expectations.
below <- assess_current %>%
filter(subject %in% c("ELA", "Math"), grade == "All",
proficiency_level %in% c("below", "total_tested")) %>%
group_by(subject, proficiency_level) %>%
summarize(total = sum(value, na.rm = TRUE), .groups = "drop") %>%
pivot_wider(names_from = proficiency_level, values_from = total) %>%
mutate(pct = below / total_tested * 100)
cat("Percent Below Proficiency:\n")
print(below[, c("subject", "pct")])
#> Percent Below Proficiency:
#> # A tibble: 2 x 2
#> subject pct
#> <chr> <dbl>
#> 1 ELA 36.1
#> 2 Math 37.325. Brownsburg matches Carmel at the top
The top 10 highest-performing districts are dominated by suburban communities. Brownsburg Community School Corp ties Carmel Clay at nearly 70% ELA proficiency.
top_10 <- assess_current %>%
filter(subject == "ELA", grade == "All",
proficiency_level %in% c("proficient", "total_tested")) %>%
pivot_wider(id_cols = c(corporation_id, corporation_name),
names_from = proficiency_level, values_from = value) %>%
filter(!is.na(proficient), !is.na(total_tested), total_tested > 1000) %>%
mutate(pct = proficient / total_tested * 100) %>%
arrange(desc(pct)) %>%
head(10)
top_10 %>% select(corporation_name, pct)
#> # A tibble: 10 x 2
#> corporation_name pct
#> <chr> <dbl>
#> 1 Carmel Clay Schools 69.6
#> 2 Brownsburg Community School Corp 69.6
#> 3 Diocese of Evansville 68.6
#> 4 School Town of Munster 66.5
#> 5 Zionsville Community Schools 65.3
#> 6 West Lafayette Com School Corp 64.5
#> 7 Diocese of Lafayette Catholic Sch 64.0
#> 8 Duneland School Corporation 63.6
#> 9 Penn-Harris-Madison School Corp 62.2
#> 10 Valparaiso Community Schools 61.4
26. Gary has lowest proficiency of any district
Gary Community School Corp has proficiency rates under 10% in both ELA and Math – among the lowest in the state for districts of any size.
gary <- assess_current %>%
filter(grepl("Gary Community", corporation_name, ignore.case = TRUE),
subject %in% c("ELA", "Math"), grade == "All",
proficiency_level %in% c("proficient", "total_tested")) %>%
pivot_wider(id_cols = subject, names_from = proficiency_level, values_from = value) %>%
mutate(pct = proficient / total_tested * 100)
cat("Gary Community Schools Proficiency:\n")
if (nrow(gary) > 0) {
print(gary[, c("subject", "pct")])
}
#> Gary Community Schools Proficiency:
#> # A tibble: 2 x 2
#> subject pct
#> <chr> <dbl>
#> 1 ELA 9.76
#> 2 Math 5.1527. Grade 3 ELA proficiency is only 38%
Grade 3 reading proficiency is a critical milestone. More than 60% of Indiana third-graders are not reading proficiently – a warning sign for their academic futures.
g3_ela <- assess_current %>%
filter(subject == "ELA", grade == "3",
proficiency_level %in% c("proficient", "total_tested")) %>%
group_by(proficiency_level) %>%
summarize(total = sum(value, na.rm = TRUE), .groups = "drop") %>%
pivot_wider(names_from = proficiency_level, values_from = total) %>%
mutate(pct = proficient / total_tested * 100)
cat("Grade 3 ELA Proficiency:", round(g3_ela$pct, 1), "%\n")
cat("Students NOT proficient at Grade 3:", round(100 - g3_ela$pct, 1), "%\n")
#> Grade 3 ELA Proficiency: 38.3 %
#> Students NOT proficient at Grade 3: 61.7 %28. Science proficiency is tested in grades 3-5
Indiana tests Science in grades 3, 4, and 5 on ILEARN. About 43% of students are proficient (At or Above) in Science.
science_dist <- assess_current %>%
filter(subject == "Science",
proficiency_level %in% c("below", "approaching", "at", "above")) %>%
group_by(proficiency_level) %>%
summarize(n = sum(value, na.rm = TRUE), .groups = "drop") %>%
filter(n > 0) %>%
mutate(pct = n / sum(n) * 100,
level = factor(proficiency_level,
levels = c("below", "approaching", "at", "above"),
labels = c("Below", "Approaching", "At", "Above")))
science_dist %>% select(level, pct)
#> # A tibble: 4 x 2
#> level pct
#> <fct> <dbl>
#> 1 Above 17.3
#> 2 Approaching 37.0
#> 3 At 25.5
#> 4 Below 20.2
29. Social Studies has the highest Below Proficiency rate
Indiana tests Social Studies on ILEARN in grade 3 only. Nearly 45% of students score Below Proficiency – the highest below-proficiency rate of any subject tested.
ss_dist <- assess_current %>%
filter(subject == "Social Studies",
proficiency_level %in% c("below", "approaching", "at", "above")) %>%
group_by(proficiency_level) %>%
summarize(n = sum(value, na.rm = TRUE), .groups = "drop") %>%
filter(n > 0) %>%
mutate(pct = n / sum(n) * 100,
level = factor(proficiency_level,
levels = c("below", "approaching", "at", "above"),
labels = c("Below", "Approaching", "At", "Above")))
ss_dist %>% select(level, pct)
#> # A tibble: 4 x 2
#> level pct
#> <fct> <dbl>
#> 1 Above 16.3
#> 2 Approaching 17.5
#> 3 At 21.5
#> 4 Below 44.7