R packages
Education Finance Data
Education Finance Mapping
EdBuild Data Resources
Master Data
codebook = master_codebook()
| Variable.Name | Description | Data.Source |
|---|---|---|
| State | State Name | F33 |
| STATE_FIPS | ANSI/FIPS State Code | F33 |
| CONUM | County Code | F33 |
| NCESID | Agency ID - NCES Assigned | NCES |
| Name | School System Name | F33 |
| ENROLL | Fall Membership | F33 |
| SLR | Total Revenue from State and Local Sources | F33/EdBuild |
| SR | Total Revenue from State Sources | F33/EdBuild |
| LR | Total Revenue from Local Sources | F33/EdBuild |
| SLRPP | Total Revenue from State and Local Sources Per Pupil | F33/EdBuild |
| SRPP | Total Revenue from State Sources Per Pupil | F33/EdBuild |
| LRPP | Total Revenue from Local Sources Per Pupil | F33/EdBuild |
| SLRPP_cola | Total Revenue from State and Local Sources Per Pupil Cost-adjusted | F33/C2ER/EdBuild |
| SRPP_cola | Total Revenue from State Sources Per Pupil Cost-adjusted | F33/C2ER/EdBuild |
| LRPP_cola | Total Revenue from Local Sources Per Pupil Cost-adjusted | F33/C2ER/EdBuild |
| County | County Name | NCES |
| state_id | State Agency ID for District | NCES |
| dType | Local Educaion Agency Type | NCES |
| dUrbanicity | Locale, Urban-Centric | NCES |
| dOperational_schools | Total Number Operational Schools | NCES |
| dEnroll_district | Total Students, All Grades (Excludes AE) | NCES |
| FRL | Free and Reduced Lunch Students | NCES |
| FRL_rate | Percent of Free and Reduced Lunch Students | NCES/EdBuild |
| LEP | Limited English Proficient (LEP) / English Language Learners (ELL) | NCES |
| IEP | Individualized Education Program Students | NCES |
| dWhite | White Students | NCES |
| pctNonwhite | Nonwhite Enrollment | NCES |
| dBlack | Black Students | NCES |
| dHispanic | Hispanic Students | NCES |
| dHawaiian_PI | Hawaiian Nat./Pacific Isl. Students | NCES |
| dAsian_PI | Asian or Asian/Pacific Islander Students | NCES |
| dAmIndian_Aknative | American Indian/Alaska Native Students | NCES |
| d2plus_races | Two or More Races Students | NCES |
| Tpop | Estimated Total Population | SAIPE |
| StPop | Estimated Population age 5-17 | SAIPE |
| StPov | Estimated number of relevant children 5 to 17 years old in poverty who are related to the householder | SAIPE |
| StPovRate | StPov/StPop | SAIPE |
| MHI | Median Household Income | EDGE, ACS 5-year |
| MPV | Median Owner-Occupied Property Value | EDGE, ACS 5-year |
| sd_area | Area (square miles) | EdBuild |
| students_per_sq_mile | Students per square mile | EdBuild/NCES |
Taming the System: Common Data Questions... and Answers!
library(openxlsx)
library(ggplot2)
library(scales)
library(knitr)
master17 <- masterpull(data_year = "2017", data_type = "geo")
### this file was downloaded from https://apps.dese.mo.gov/MCDS/home.aspx
### Current Expenditure Per ADA 2009-10 to 2017-18
mo_ada <- read.xlsx("/MO_ADA.xlsx", sheet = "2016-2017") %>%
select(District.Code, ADA) %>%
mutate(state_id = gsub("-", "", District.Code))
st_louis_county <- master17 %>%
right_join(mo_ada, by = "state_id")%
filter(CONUM == "29189" | CONUM == "29510") %>%
select(NAME, ENROLL, ADA, StPovRate, SR) %>%
mutate(`ADA/Enrollment Ratio` = ADA/ENROLL,
StateRevper_ADA = SR/ADA,
StateRevper_Enroll = SR/ENROLL,
`Miscount Per Student` = StateRevper_ADA - StateRevper_Enroll) %>%
rename(`Student Poverty Rate` = StPovRate)
st_louis_f <- st_louis_county %>%
rename(`School District` = NAME) %>%
arrange(desc(`Student Poverty Rate`)) %>%
mutate(Enrollment = comma(ENROLL, big.mark = ","),
ADA = comma(ADA, big.mark = ","),
`State Revenue Per ADA` = dollar(StateRevper_ADA, accuracy=1, big.mark = ","),
`State Revenue Per Enrollment` = dollar(StateRevper_Enroll, accuracy=1, big.mark = ","),
`Miscount of revenue per student` = dollar(`Miscount Per Student`, accuracy=1, big.mark = ","),
`Student Poverty Rate` = percent(`Student Poverty Rate`, accuracy = 1),
`ADA/Enrollment Ratio` = percent(`ADA/Enrollment Ratio`, accuracy = 1),
`State Revenue` = dollar(SR, accuracy=1, big.mark = ",")) %>%
select(`School District`, `Student Poverty Rate`, Enrollment, ADA, `ADA/Enrollment Ratio`,
`State Revenue`, `State Revenue Per ADA`, `State Revenue Per Enrollment`,
`Miscount of revenue per student`)
kable(st_louis_f)
| School District | Student Poverty Rate | Enrollment | ADA | ADA/Enrollment Ratio | State Revenue | State Revenue Per ADA | State Revenue Per Enrollment | Miscount of revenue per student |
|---|---|---|---|---|---|---|---|---|
| Normandy Schools Collaborative | 31% | 3,770 | 3,390 | 90% | $28,116,000 | $8,295 | $7,458 | $837 |
| St. Louis City School District | 31% | 28,270 | 21,422 | 76% | $105,949,000 | $4,946 | $3,748 | $1,198 |
| Riverview Gardens School District | 31% | 5,915 | 5,235 | 88% | $38,849,000 | $7,421 | $6,568 | $854 |
| Jennings School District | 29% | 2,570 | 2,369 | 92% | $17,127,000 | $7,229 | $6,664 | $565 |
| Ferguson-Florissant R-II School District | 22% | 10,748 | 9,027 | 84% | $56,426,000 | $6,251 | $5,250 | $1,001 |
| Hancock Place School District | 21% | 1,283 | 1,413 | 110% | $9,514,000 | $6,732 | $7,415 | $-684 |
| Ritenour School District | 20% | 6,485 | 5,687 | 88% | $33,276,000 | $5,851 | $5,131 | $720 |
| Hazelwood School District | 18% | 17,952 | 16,508 | 92% | $90,920,000 | $5,508 | $5,065 | $443 |
| University City School District | 14% | 2,818 | 2,443 | 87% | $14,928,000 | $6,112 | $5,297 | $814 |
| Valley Park School District | 13% | 751 | 824 | 110% | $2,999,000 | $3,638 | $3,993 | $-356 |
| Pattonville R-III School District | 13% | 5,793 | 5,287 | 91% | $24,106,000 | $4,559 | $4,161 | $398 |
| Bayless School District | 13% | 1,571 | 1,640 | 104% | $9,077,000 | $5,535 | $5,778 | $-243 |
| Maplewood-Richmond Heights School District | 10% | 1,366 | 1,194 | 87% | $5,526,000 | $4,628 | $4,045 | $582 |
| Affton 101 School District | 8% | 2,474 | 2,409 | 97% | $8,760,000 | $3,636 | $3,541 | $95 |
| Mehlville R-IX School District | 6% | 10,140 | 9,558 | 94% | $36,377,000 | $3,806 | $3,587 | $219 |
| Brentwood School District | 5% | 676 | 728 | 108% | $3,553,000 | $4,877 | $5,256 | $-379 |
| Lindbergh School District | 4% | 6,677 | 6,116 | 92% | $18,660,000 | $3,051 | $2,795 | $256 |
| Parkway C-2 School District | 4% | 16,603 | 16,752 | 101% | $54,630,000 | $3,261 | $3,290 | $-29 |
| Ladue School District | 4% | 4,063 | 3,832 | 94% | $16,757,000 | $4,373 | $4,124 | $248 |
| Webster Groves School District | 4% | 4,518 | 4,198 | 93% | $18,701,000 | $4,455 | $4,139 | $316 |
| Clayton School District | 3% | 2,254 | 2,455 | 109% | $10,987,000 | $4,475 | $4,874 | $-400 |
| Rockwood R-VI School District | 3% | 19,675 | 19,852 | 101% | $76,819,000 | $3,870 | $3,904 | $-35 |
| Kirkwood R-VII School District | 3% | 5,780 | 5,263 | 91% | $18,844,000 | $3,580 | $3,260 | $320 |
stlouis <- ggplot(st_louis_county, aes(`Student Poverty Rate`, `Miscount Per Student`, color = `Student Poverty Rate`)) +
geom_point(mapping = aes(size = ENROLL)) +
scale_color_gradient(low="#dff3fe", high="#19596d") +
theme_bw() +
theme(legend.position="none")
Using master data
library(scales)
master_fin = masterpull(data_year = "2017", data_type = "fin")
averages_fin <- master_fin %>%
summarise(Exclusion = "finance",
Districts = comma(n()),
`Average Student Poverty Rate` = percent(mean(StPovRate, na.rm = TRUE), accuracy = 1L),
`Average Local Rev Per Pupil` = dollar(round(mean(LRPP, na.rm = TRUE), 0)),
`Average Total Rev Per Pupil` = dollar(round(mean(SLRPP, na.rm = TRUE), 0)))
| Exclusion | Districts | Average Student Poverty Rate | Average Local Rev Per Pupil | Average Total Rev Per Pupil |
|---|---|---|---|---|
| finance | 13,037 | 17% | $7,308 | $14,413 |
| general | 13,184 | 17% | $7,439 | $14,581 |
| with geography | 13,287 | 17% | $7,457 | $14,601 |
| all districts | 18,381 | 17% | $7,923 | $15,633 |
Education Finance Mapping
Common School District Mapping Questions
What years are school district shapes available?
What's with elementary and secondary districts?
master_shp <- sd_shapepull()
sdType <- as.data.frame(master_shp) %>%
select(-geometry) %>%
group_by(sdType) %>%
summarise(districts = n())
| sdType | districts |
|---|---|
| unified | 10,865 |
| elementary | 1,958 |
| secondary | 486 |