library(readxl)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
## ✔ ggplot2 3.3.2     ✔ purrr   0.3.4
## ✔ tibble  3.0.4     ✔ dplyr   1.0.2
## ✔ tidyr   1.1.2     ✔ stringr 1.4.0
## ✔ readr   1.4.0     ✔ forcats 0.5.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library
## function (package, help, pos = 2, lib.loc = NULL, character.only = FALSE, 
##     logical.return = FALSE, warn.conflicts, quietly = FALSE, 
##     verbose = getOption("verbose"), mask.ok, exclude, include.only, 
##     attach.required = missing(include.only)) 
## {
##     conf.ctrl <- getOption("conflicts.policy")
##     if (is.character(conf.ctrl)) 
##         conf.ctrl <- switch(conf.ctrl, strict = list(error = TRUE, 
##             warn = FALSE), depends.ok = list(error = TRUE, generics.ok = TRUE, 
##             can.mask = c("base", "methods", "utils", "grDevices", 
##                 "graphics", "stats"), depends.ok = TRUE), warning(gettextf("unknown conflict policy: %s", 
##             sQuote(conf.ctrl)), call. = FALSE, domain = NA))
##     if (!is.list(conf.ctrl)) 
##         conf.ctrl <- NULL
##     stopOnConflict <- isTRUE(conf.ctrl$error)
##     if (missing(warn.conflicts)) 
##         warn.conflicts <- if (isFALSE(conf.ctrl$warn)) 
##             FALSE
##         else TRUE
##     if ((!missing(include.only)) && (!missing(exclude))) 
##         stop(gettext("only one of 'include.only' and 'exclude' can be used"), 
##             call. = FALSE, domain = NA)
##     testRversion <- function(pkgInfo, pkgname, pkgpath) {
##         if (is.null(built <- pkgInfo$Built)) 
##             stop(gettextf("package %s has not been installed properly\n", 
##                 sQuote(pkgname)), call. = FALSE, domain = NA)
##         R_version_built_under <- as.numeric_version(built$R)
##         if (R_version_built_under < "3.0.0") 
##             stop(gettextf("package %s was built before R 3.0.0: please re-install it", 
##                 sQuote(pkgname)), call. = FALSE, domain = NA)
##         current <- getRversion()
##         if (length(Rdeps <- pkgInfo$Rdepends2)) {
##             for (dep in Rdeps) if (length(dep) > 1L) {
##                 target <- dep$version
##                 res <- do.call(dep$op, if (is.character(target)) 
##                   list(as.numeric(R.version[["svn rev"]]), as.numeric(sub("^r", 
##                     "", target)))
##                 else list(current, as.numeric_version(target)))
##                 if (!res) 
##                   stop(gettextf("This is R %s, package %s needs %s %s", 
##                     current, sQuote(pkgname), dep$op, target), 
##                     call. = FALSE, domain = NA)
##             }
##         }
##         if (R_version_built_under > current) 
##             warning(gettextf("package %s was built under R version %s", 
##                 sQuote(pkgname), as.character(built$R)), call. = FALSE, 
##                 domain = NA)
##         platform <- built$Platform
##         r_arch <- .Platform$r_arch
##         if (.Platform$OS.type == "unix") {
##         }
##         else {
##             if (nzchar(platform) && !grepl("mingw", platform)) 
##                 stop(gettextf("package %s was built for %s", 
##                   sQuote(pkgname), platform), call. = FALSE, 
##                   domain = NA)
##         }
##         if (nzchar(r_arch) && file.exists(file.path(pkgpath, 
##             "libs")) && !file.exists(file.path(pkgpath, "libs", 
##             r_arch))) 
##             stop(gettextf("package %s is not installed for 'arch = %s'", 
##                 sQuote(pkgname), r_arch), call. = FALSE, domain = NA)
##     }
##     checkNoGenerics <- function(env, pkg) {
##         nenv <- env
##         ns <- .getNamespace(as.name(pkg))
##         if (!is.null(ns)) 
##             nenv <- asNamespace(ns)
##         if (exists(".noGenerics", envir = nenv, inherits = FALSE)) 
##             TRUE
##         else {
##             !any(startsWith(names(env), ".__T"))
##         }
##     }
##     checkConflicts <- function(package, pkgname, pkgpath, nogenerics, 
##         env) {
##         dont.mind <- c("last.dump", "last.warning", ".Last.value", 
##             ".Random.seed", ".Last.lib", ".onDetach", ".packageName", 
##             ".noGenerics", ".required", ".no_S3_generics", ".Depends", 
##             ".requireCachedGenerics")
##         sp <- search()
##         lib.pos <- which(sp == pkgname)
##         ob <- names(as.environment(lib.pos))
##         if (!nogenerics) {
##             these <- ob[startsWith(ob, ".__T__")]
##             gen <- gsub(".__T__(.*):([^:]+)", "\\1", these)
##             from <- gsub(".__T__(.*):([^:]+)", "\\2", these)
##             gen <- gen[from != package]
##             ob <- ob[!(ob %in% gen)]
##         }
##         ipos <- seq_along(sp)[-c(lib.pos, match(c("Autoloads", 
##             "CheckExEnv"), sp, 0L))]
##         cpos <- NULL
##         conflicts <- vector("list", 0)
##         for (i in ipos) {
##             obj.same <- match(names(as.environment(i)), ob, nomatch = 0L)
##             if (any(obj.same > 0L)) {
##                 same <- ob[obj.same]
##                 same <- same[!(same %in% dont.mind)]
##                 Classobjs <- which(startsWith(same, ".__"))
##                 if (length(Classobjs)) 
##                   same <- same[-Classobjs]
##                 same.isFn <- function(where) vapply(same, exists, 
##                   NA, where = where, mode = "function", inherits = FALSE)
##                 same <- same[same.isFn(i) == same.isFn(lib.pos)]
##                 not.Ident <- function(ch, TRAFO = identity, ...) vapply(ch, 
##                   function(.) !identical(TRAFO(get(., i)), TRAFO(get(., 
##                     lib.pos)), ...), NA)
##                 if (length(same)) 
##                   same <- same[not.Ident(same)]
##                 if (length(same) && identical(sp[i], "package:base")) 
##                   same <- same[not.Ident(same, ignore.environment = TRUE)]
##                 if (length(same)) {
##                   conflicts[[sp[i]]] <- same
##                   cpos[sp[i]] <- i
##                 }
##             }
##         }
##         if (length(conflicts)) {
##             if (stopOnConflict) {
##                 emsg <- ""
##                 pkg <- names(conflicts)
##                 notOK <- vector("list", 0)
##                 for (i in seq_along(conflicts)) {
##                   pkgname <- sub("^package:", "", pkg[i])
##                   if (pkgname %in% canMaskEnv$canMask) 
##                     next
##                   same <- conflicts[[i]]
##                   if (is.list(mask.ok)) 
##                     myMaskOK <- mask.ok[[pkgname]]
##                   else myMaskOK <- mask.ok
##                   if (isTRUE(myMaskOK)) 
##                     same <- NULL
##                   else if (is.character(myMaskOK)) 
##                     same <- setdiff(same, myMaskOK)
##                   if (length(same)) {
##                     notOK[[pkg[i]]] <- same
##                     msg <- .maskedMsg(sort(same), pkg = sQuote(pkg[i]), 
##                       by = cpos[i] < lib.pos)
##                     emsg <- paste(emsg, msg, sep = "\n")
##                   }
##                 }
##                 if (length(notOK)) {
##                   msg <- gettextf("Conflicts attaching package %s:\n%s", 
##                     sQuote(package), emsg)
##                   stop(errorCondition(msg, package = package, 
##                     conflicts = conflicts, class = "packageConflictError"))
##                 }
##             }
##             if (warn.conflicts) {
##                 packageStartupMessage(gettextf("\nAttaching package: %s\n", 
##                   sQuote(package)), domain = NA)
##                 pkg <- names(conflicts)
##                 for (i in seq_along(conflicts)) {
##                   msg <- .maskedMsg(sort(conflicts[[i]]), pkg = sQuote(pkg[i]), 
##                     by = cpos[i] < lib.pos)
##                   packageStartupMessage(msg, domain = NA)
##                 }
##             }
##         }
##     }
##     if (verbose && quietly) 
##         message("'verbose' and 'quietly' are both true; being verbose then ..")
##     if (!missing(package)) {
##         if (is.null(lib.loc)) 
##             lib.loc <- .libPaths()
##         lib.loc <- lib.loc[dir.exists(lib.loc)]
##         if (!character.only) 
##             package <- as.character(substitute(package))
##         if (length(package) != 1L) 
##             stop("'package' must be of length 1")
##         if (is.na(package) || (package == "")) 
##             stop("invalid package name")
##         pkgname <- paste0("package:", package)
##         newpackage <- is.na(match(pkgname, search()))
##         if (newpackage) {
##             pkgpath <- find.package(package, lib.loc, quiet = TRUE, 
##                 verbose = verbose)
##             if (length(pkgpath) == 0L) {
##                 if (length(lib.loc) && !logical.return) 
##                   stop(packageNotFoundError(package, lib.loc, 
##                     sys.call()))
##                 txt <- if (length(lib.loc)) 
##                   gettextf("there is no package called %s", sQuote(package))
##                 else gettext("no library trees found in 'lib.loc'")
##                 if (logical.return) {
##                   warning(txt, domain = NA)
##                   return(FALSE)
##                 }
##                 else stop(txt, domain = NA)
##             }
##             which.lib.loc <- normalizePath(dirname(pkgpath), 
##                 "/", TRUE)
##             pfile <- system.file("Meta", "package.rds", package = package, 
##                 lib.loc = which.lib.loc)
##             if (!nzchar(pfile)) 
##                 stop(gettextf("%s is not a valid installed package", 
##                   sQuote(package)), domain = NA)
##             pkgInfo <- readRDS(pfile)
##             testRversion(pkgInfo, package, pkgpath)
##             if (is.character(pos)) {
##                 npos <- match(pos, search())
##                 if (is.na(npos)) {
##                   warning(gettextf("%s not found on search path, using pos = 2", 
##                     sQuote(pos)), domain = NA)
##                   pos <- 2
##                 }
##                 else pos <- npos
##             }
##             deps <- unique(names(pkgInfo$Depends))
##             depsOK <- isTRUE(conf.ctrl$depends.ok)
##             if (depsOK) {
##                 canMaskEnv <- dynGet("__library_can_mask__", 
##                   NULL)
##                 if (is.null(canMaskEnv)) {
##                   canMaskEnv <- new.env()
##                   canMaskEnv$canMask <- union("base", conf.ctrl$can.mask)
##                   "__library_can_mask__" <- canMaskEnv
##                 }
##                 canMaskEnv$canMask <- unique(c(package, deps, 
##                   canMaskEnv$canMask))
##             }
##             else canMaskEnv <- NULL
##             if (attach.required) 
##                 .getRequiredPackages2(pkgInfo, quietly = quietly)
##             cr <- conflictRules(package)
##             if (missing(mask.ok)) 
##                 mask.ok <- cr$mask.ok
##             if (missing(exclude)) 
##                 exclude <- cr$exclude
##             if (packageHasNamespace(package, which.lib.loc)) {
##                 if (isNamespaceLoaded(package)) {
##                   newversion <- as.numeric_version(pkgInfo$DESCRIPTION["Version"])
##                   oldversion <- as.numeric_version(getNamespaceVersion(package))
##                   if (newversion != oldversion) {
##                     tryCatch(unloadNamespace(package), error = function(e) {
##                       P <- if (!is.null(cc <- conditionCall(e))) 
##                         paste("Error in", deparse(cc)[1L], ": ")
##                       else "Error : "
##                       stop(gettextf("Package %s version %s cannot be unloaded:\n %s", 
##                         sQuote(package), oldversion, paste0(P, 
##                           conditionMessage(e), "\n")), domain = NA)
##                     })
##                   }
##                 }
##                 tt <- tryCatch({
##                   attr(package, "LibPath") <- which.lib.loc
##                   ns <- loadNamespace(package, lib.loc)
##                   env <- attachNamespace(ns, pos = pos, deps, 
##                     exclude, include.only)
##                 }, error = function(e) {
##                   P <- if (!is.null(cc <- conditionCall(e))) 
##                     paste(" in", deparse(cc)[1L])
##                   else ""
##                   msg <- gettextf("package or namespace load failed for %s%s:\n %s", 
##                     sQuote(package), P, conditionMessage(e))
##                   if (logical.return) 
##                     message(paste("Error:", msg), domain = NA)
##                   else stop(msg, call. = FALSE, domain = NA)
##                 })
##                 if (logical.return && is.null(tt)) 
##                   return(FALSE)
##                 attr(package, "LibPath") <- NULL
##                 {
##                   on.exit(detach(pos = pos))
##                   nogenerics <- !.isMethodsDispatchOn() || checkNoGenerics(env, 
##                     package)
##                   if (isFALSE(conf.ctrl$generics.ok) || (stopOnConflict && 
##                     !isTRUE(conf.ctrl$generics.ok))) 
##                     nogenerics <- TRUE
##                   if (stopOnConflict || (warn.conflicts && !exists(".conflicts.OK", 
##                     envir = env, inherits = FALSE))) 
##                     checkConflicts(package, pkgname, pkgpath, 
##                       nogenerics, ns)
##                   on.exit()
##                   if (logical.return) 
##                     return(TRUE)
##                   else return(invisible(.packages()))
##                 }
##             }
##             else stop(gettextf("package %s does not have a namespace and should be re-installed", 
##                 sQuote(package)), domain = NA)
##         }
##         if (verbose && !newpackage) 
##             warning(gettextf("package %s already present in search()", 
##                 sQuote(package)), domain = NA)
##     }
##     else if (!missing(help)) {
##         if (!character.only) 
##             help <- as.character(substitute(help))
##         pkgName <- help[1L]
##         pkgPath <- find.package(pkgName, lib.loc, verbose = verbose)
##         docFiles <- c(file.path(pkgPath, "Meta", "package.rds"), 
##             file.path(pkgPath, "INDEX"))
##         if (file.exists(vignetteIndexRDS <- file.path(pkgPath, 
##             "Meta", "vignette.rds"))) 
##             docFiles <- c(docFiles, vignetteIndexRDS)
##         pkgInfo <- vector("list", 3L)
##         readDocFile <- function(f) {
##             if (basename(f) %in% "package.rds") {
##                 txt <- readRDS(f)$DESCRIPTION
##                 if ("Encoding" %in% names(txt)) {
##                   to <- if (Sys.getlocale("LC_CTYPE") == "C") 
##                     "ASCII//TRANSLIT"
##                   else ""
##                   tmp <- try(iconv(txt, from = txt["Encoding"], 
##                     to = to))
##                   if (!inherits(tmp, "try-error")) 
##                     txt <- tmp
##                   else warning("'DESCRIPTION' has an 'Encoding' field and re-encoding is not possible", 
##                     call. = FALSE)
##                 }
##                 nm <- paste0(names(txt), ":")
##                 formatDL(nm, txt, indent = max(nchar(nm, "w")) + 
##                   3L)
##             }
##             else if (basename(f) %in% "vignette.rds") {
##                 txt <- readRDS(f)
##                 if (is.data.frame(txt) && nrow(txt)) 
##                   cbind(basename(gsub("\\.[[:alpha:]]+$", "", 
##                     txt$File)), paste(txt$Title, paste0(rep.int("(source", 
##                     NROW(txt)), ifelse(nzchar(txt$PDF), ", pdf", 
##                     ""), ")")))
##                 else NULL
##             }
##             else readLines(f)
##         }
##         for (i in which(file.exists(docFiles))) pkgInfo[[i]] <- readDocFile(docFiles[i])
##         y <- list(name = pkgName, path = pkgPath, info = pkgInfo)
##         class(y) <- "packageInfo"
##         return(y)
##     }
##     else {
##         if (is.null(lib.loc)) 
##             lib.loc <- .libPaths()
##         db <- matrix(character(), nrow = 0L, ncol = 3L)
##         nopkgs <- character()
##         for (lib in lib.loc) {
##             a <- .packages(all.available = TRUE, lib.loc = lib)
##             for (i in sort(a)) {
##                 file <- system.file("Meta", "package.rds", package = i, 
##                   lib.loc = lib)
##                 title <- if (nzchar(file)) {
##                   txt <- readRDS(file)
##                   if (is.list(txt)) 
##                     txt <- txt$DESCRIPTION
##                   if ("Encoding" %in% names(txt)) {
##                     to <- if (Sys.getlocale("LC_CTYPE") == "C") 
##                       "ASCII//TRANSLIT"
##                     else ""
##                     tmp <- try(iconv(txt, txt["Encoding"], to, 
##                       "?"))
##                     if (!inherits(tmp, "try-error")) 
##                       txt <- tmp
##                     else warning("'DESCRIPTION' has an 'Encoding' field and re-encoding is not possible", 
##                       call. = FALSE)
##                   }
##                   txt["Title"]
##                 }
##                 else NA
##                 if (is.na(title)) 
##                   title <- " ** No title available ** "
##                 db <- rbind(db, cbind(i, lib, title))
##             }
##             if (length(a) == 0L) 
##                 nopkgs <- c(nopkgs, lib)
##         }
##         dimnames(db) <- list(NULL, c("Package", "LibPath", "Title"))
##         if (length(nopkgs) && !missing(lib.loc)) {
##             pkglist <- paste(sQuote(nopkgs), collapse = ", ")
##             msg <- sprintf(ngettext(length(nopkgs), "library %s contains no packages", 
##                 "libraries %s contain no packages"), pkglist)
##             warning(msg, domain = NA)
##         }
##         y <- list(header = NULL, results = db, footer = NULL)
##         class(y) <- "libraryIQR"
##         return(y)
##     }
##     if (logical.return) 
##         TRUE
##     else invisible(.packages())
## }
## <bytecode: 0x559e6c4961c0>
## <environment: namespace:base>
SAT_2022_EBRW <- read_excel("SAT_2022_EBRW.xlsx")%>%
  mutate(EBRW_Benchmark_PCT = as.numeric(EBRW_Benchmark_PCT))
## Warning: Problem with `mutate()` input `EBRW_Benchmark_PCT`.
## ℹ NAs introduced by coercion
## ℹ Input `EBRW_Benchmark_PCT` is `as.numeric(EBRW_Benchmark_PCT)`.
## Warning in mask$eval_all_mutate(dots[[i]]): NAs introduced by coercion
SAT_2022_Math <- read_excel("SAT_2022_Math.xlsx")%>%
  mutate(Math_Benchmark_PCT = as.numeric(Math_Benchmark_PCT))
## Warning: Problem with `mutate()` input `Math_Benchmark_PCT`.
## ℹ NAs introduced by coercion
## ℹ Input `Math_Benchmark_PCT` is `as.numeric(Math_Benchmark_PCT)`.

## Warning: NAs introduced by coercion
School_Enrollment <- read_excel("School_Enrollment.xlsx")

#Snider Range

Snider_Range <- SAT_2022_EBRW %>%
  left_join(SAT_2022_Math, by = "Schl_Name") %>%
  left_join(School_Enrollment, by = "Schl_Name") %>%
  select(Schl_Name, Free_Reduced_Price_Meals, Paid_Meals, TOTAL_ENROLLMENT, Percent_FRL, EBRW_Total_Tested, EBRW_Benchmark_PCT, Math_Total_Tested, Math_Benchmark_PCT) %>%
  filter(Percent_FRL <= 0.50, Percent_FRL >= 0.46) %>%
  arrange(desc(EBRW_Benchmark_PCT))

Snider_Range
## # A tibble: 25 x 9
##    Schl_Name Free_Reduced_Pr… Paid_Meals TOTAL_ENROLLMENT Percent_FRL
##    <chr>                <dbl>      <dbl>            <dbl>       <dbl>
##  1 Springs …              211        238              449       0.470
##  2 Greencas…              231        244              475       0.486
##  3 Central …              516        584             1100       0.469
##  4 Mitchell…              219        234              453       0.483
##  5 Greensbu…              340        376              716       0.475
##  6 Argos Co…              156        179              335       0.466
##  7 Plymouth…              508        572             1080       0.470
##  8 Attica H…              142        165              307       0.463
##  9 Seymour …              771        834             1605       0.480
## 10 Portage …             1065       1213             2278       0.468
## # … with 15 more rows, and 4 more variables: EBRW_Total_Tested <dbl>,
## #   EBRW_Benchmark_PCT <dbl>, Math_Total_Tested <dbl>, Math_Benchmark_PCT <dbl>
Snider_Range %>%
  arrange(desc(Math_Benchmark_PCT))
## # A tibble: 25 x 9
##    Schl_Name Free_Reduced_Pr… Paid_Meals TOTAL_ENROLLMENT Percent_FRL
##    <chr>                <dbl>      <dbl>            <dbl>       <dbl>
##  1 Springs …              211        238              449       0.470
##  2 Greencas…              231        244              475       0.486
##  3 Central …              516        584             1100       0.469
##  4 Attica H…              142        165              307       0.463
##  5 Argos Co…              156        179              335       0.466
##  6 Plymouth…              508        572             1080       0.470
##  7 Alexandr…              358        394              752       0.476
##  8 Greensbu…              340        376              716       0.475
##  9 Achieve …              234        272              506       0.462
## 10 Seymour …              771        834             1605       0.480
## # … with 15 more rows, and 4 more variables: EBRW_Total_Tested <dbl>,
## #   EBRW_Benchmark_PCT <dbl>, Math_Total_Tested <dbl>, Math_Benchmark_PCT <dbl>

Out of the schools that fall between 46-50% of students with free reduced lunch, Snider High School falls in 13th out of 25 schools in the percentage of EBRW scores above the benchmark, and 13th out of 25 schools in the percentage of Math scores above the benchmark. #Northside Range

NorthSide_Range <- SAT_2022_EBRW %>%
  left_join(SAT_2022_Math, by = "Schl_Name") %>%
  left_join(School_Enrollment, by = "Schl_Name") %>%
  select(Schl_Name, Free_Reduced_Price_Meals, Paid_Meals, TOTAL_ENROLLMENT, Percent_FRL, EBRW_Total_Tested, EBRW_Benchmark_PCT, Math_Total_Tested, Math_Benchmark_PCT) %>%
  filter(Percent_FRL <= 0.69, Percent_FRL >= 0.65) %>%
  arrange(desc(EBRW_Benchmark_PCT))
NorthSide_Range
## # A tibble: 16 x 9
##    Schl_Name Free_Reduced_Pr… Paid_Meals TOTAL_ENROLLMENT Percent_FRL
##    <chr>                <dbl>      <dbl>            <dbl>       <dbl>
##  1 Richmond…              871        456             1327       0.656
##  2 Purdue P…              371        192              563       0.659
##  3 Decatur …             1333        678             2011       0.663
##  4 Beech Gr…              640        328              968       0.661
##  5 North Si…             1027        486             1513       0.679
##  6 Wayne Hi…              903        476             1379       0.655
##  7 Indiana …             2004       1052             3056       0.656
##  8 Merrillv…             1351        653             2004       0.674
##  9 Dugger U…              347        186              533       0.651
## 10 Anderson…             1207        630             1837       0.657
## 11 Frankfor…              605        288              893       0.677
## 12 Cannelto…              157         82              239       0.657
## 13 Emmerich…              153         72              225       0.68 
## 14 Arsenal …             1402        720             2122       0.661
## 15 Rise Up …              112         56              168       0.667
## 16 Communit…               65         32               97       0.670
## # … with 4 more variables: EBRW_Total_Tested <dbl>, EBRW_Benchmark_PCT <dbl>,
## #   Math_Total_Tested <dbl>, Math_Benchmark_PCT <dbl>
NorthSide_Range %>%
  arrange(desc(Math_Benchmark_PCT))
## # A tibble: 16 x 9
##    Schl_Name Free_Reduced_Pr… Paid_Meals TOTAL_ENROLLMENT Percent_FRL
##    <chr>                <dbl>      <dbl>            <dbl>       <dbl>
##  1 Merrillv…             1351        653             2004       0.674
##  2 Purdue P…              371        192              563       0.659
##  3 Decatur …             1333        678             2011       0.663
##  4 Beech Gr…              640        328              968       0.661
##  5 Richmond…              871        456             1327       0.656
##  6 North Si…             1027        486             1513       0.679
##  7 Anderson…             1207        630             1837       0.657
##  8 Wayne Hi…              903        476             1379       0.655
##  9 Frankfor…              605        288              893       0.677
## 10 Indiana …             2004       1052             3056       0.656
## 11 Dugger U…              347        186              533       0.651
## 12 Rise Up …              112         56              168       0.667
## 13 Emmerich…              153         72              225       0.68 
## 14 Arsenal …             1402        720             2122       0.661
## 15 Cannelto…              157         82              239       0.657
## 16 Communit…               65         32               97       0.670
## # … with 4 more variables: EBRW_Total_Tested <dbl>, EBRW_Benchmark_PCT <dbl>,
## #   Math_Total_Tested <dbl>, Math_Benchmark_PCT <dbl>

#Northrop_Range

Northrop_Range <- SAT_2022_EBRW %>%
  left_join(SAT_2022_Math, by = "Schl_Name") %>%
  left_join(School_Enrollment, by = "Schl_Name") %>%
  select(Schl_Name, Free_Reduced_Price_Meals, Paid_Meals, TOTAL_ENROLLMENT, Percent_FRL, EBRW_Total_Tested, EBRW_Benchmark_PCT, Math_Total_Tested, Math_Benchmark_PCT) %>%
  filter(Percent_FRL <= 0.56, Percent_FRL >= 0.52) %>%
  arrange(desc(EBRW_Benchmark_PCT))
Northrop_Range
## # A tibble: 28 x 9
##    Schl_Name Free_Reduced_Pr… Paid_Meals TOTAL_ENROLLMENT Percent_FRL
##    <chr>                <dbl>      <dbl>            <dbl>       <dbl>
##  1 Terre Ha…              848        727             1575       0.538
##  2 Parke He…              205        163              368       0.557
##  3 LaPorte …              944        860             1804       0.523
##  4 Paoli Jr…              335        266              601       0.557
##  5 South Ri…              191        171              362       0.528
##  6 Twin Lak…              343        312              655       0.524
##  7 Jay Coun…              676        622             1298       0.521
##  8 Terre Ha…              880        771             1651       0.533
##  9 Blackfor…              390        349              739       0.528
## 10 Rushvill…              344        316              660       0.521
## # … with 18 more rows, and 4 more variables: EBRW_Total_Tested <dbl>,
## #   EBRW_Benchmark_PCT <dbl>, Math_Total_Tested <dbl>, Math_Benchmark_PCT <dbl>
Northrop_Range %>%
  arrange(desc(Math_Benchmark_PCT))
## # A tibble: 28 x 9
##    Schl_Name Free_Reduced_Pr… Paid_Meals TOTAL_ENROLLMENT Percent_FRL
##    <chr>                <dbl>      <dbl>            <dbl>       <dbl>
##  1 Jay Coun…              676        622             1298       0.521
##  2 Twin Lak…              343        312              655       0.524
##  3 South Ri…              191        171              362       0.528
##  4 Paoli Jr…              335        266              601       0.557
##  5 Terre Ha…              848        727             1575       0.538
##  6 Wabash H…              256        215              471       0.544
##  7 Crawford…              378        318              696       0.543
##  8 LaPorte …              944        860             1804       0.523
##  9 Terre Ha…              880        771             1651       0.533
## 10 Parke He…              205        163              368       0.557
## # … with 18 more rows, and 4 more variables: EBRW_Total_Tested <dbl>,
## #   EBRW_Benchmark_PCT <dbl>, Math_Total_Tested <dbl>, Math_Benchmark_PCT <dbl>

#Caroll Range

Caroll_Range <- SAT_2022_EBRW %>%
  left_join(SAT_2022_Math, by = "Schl_Name") %>%
  left_join(School_Enrollment, by = "Schl_Name") %>%
  select(Schl_Name, Free_Reduced_Price_Meals, Paid_Meals, TOTAL_ENROLLMENT, Percent_FRL, EBRW_Total_Tested, EBRW_Benchmark_PCT, Math_Total_Tested, Math_Benchmark_PCT) %>%
  filter(Percent_FRL <= 0.19, Percent_FRL >= 0.15) %>%
  arrange(desc(EBRW_Benchmark_PCT))
Caroll_Range
## # A tibble: 10 x 9
##    Schl_Name Free_Reduced_Pr… Paid_Meals TOTAL_ENROLLMENT Percent_FRL
##    <chr>                <dbl>      <dbl>            <dbl>       <dbl>
##  1 Signatur…               62        321              383       0.162
##  2 Hamilton…              521       2909             3430       0.152
##  3 Tri-West…              118        507              625       0.189
##  4 Westfiel…              447       2180             2627       0.170
##  5 Leo Juni…              237       1154             1391       0.170
##  6 Hanover …              143        620              763       0.187
##  7 Carroll …              425       2050             2475       0.172
##  8 East Cen…              212       1057             1269       0.167
##  9 Adams Ce…               66        302              368       0.179
## 10 Prairie …               78        354              432       0.181
## # … with 4 more variables: EBRW_Total_Tested <dbl>, EBRW_Benchmark_PCT <dbl>,
## #   Math_Total_Tested <dbl>, Math_Benchmark_PCT <dbl>
Caroll_Range %>%
  arrange(desc(Math_Benchmark_PCT))
## # A tibble: 10 x 9
##    Schl_Name Free_Reduced_Pr… Paid_Meals TOTAL_ENROLLMENT Percent_FRL
##    <chr>                <dbl>      <dbl>            <dbl>       <dbl>
##  1 Signatur…               62        321              383       0.162
##  2 Hamilton…              521       2909             3430       0.152
##  3 Westfiel…              447       2180             2627       0.170
##  4 Carroll …              425       2050             2475       0.172
##  5 Hanover …              143        620              763       0.187
##  6 Leo Juni…              237       1154             1391       0.170
##  7 Adams Ce…               66        302              368       0.179
##  8 Tri-West…              118        507              625       0.189
##  9 East Cen…              212       1057             1269       0.167
## 10 Prairie …               78        354              432       0.181
## # … with 4 more variables: EBRW_Total_Tested <dbl>, EBRW_Benchmark_PCT <dbl>,
## #   Math_Total_Tested <dbl>, Math_Benchmark_PCT <dbl>

#SouthSide

SouthSide_Range <- SAT_2022_EBRW %>%
  left_join(SAT_2022_Math, by = "Schl_Name") %>%
  left_join(School_Enrollment, by = "Schl_Name") %>%
  select(Schl_Name, Free_Reduced_Price_Meals, Paid_Meals, TOTAL_ENROLLMENT, Percent_FRL, EBRW_Total_Tested, EBRW_Benchmark_PCT, Math_Total_Tested, Math_Benchmark_PCT) %>%
  filter(Percent_FRL <= 0.77, Percent_FRL >= 0.73, EBRW_Total_Tested > 8) %>%
  arrange(desc(EBRW_Benchmark_PCT))

SouthSide_Range
## # A tibble: 13 x 9
##    Schl_Name Free_Reduced_Pr… Paid_Meals TOTAL_ENROLLMENT Percent_FRL
##    <chr>                <dbl>      <dbl>            <dbl>       <dbl>
##  1 Southpor…             1794        597             2391       0.750
##  2 Vigo Vir…              252         88              340       0.741
##  3 GEO Next…              137         42              179       0.765
##  4 IN Math …              529        159              688       0.769
##  5 East Chi…              831        278             1109       0.749
##  6 South Si…             1047        338             1385       0.756
##  7 Excel Ce…              226         83              309       0.731
##  8 Excel Ce…              217         77              294       0.738
##  9 James an…              297         98              395       0.752
## 10 Phalen V…              388        128              516       0.752
## 11 Christel…              534        171              705       0.757
## 12 Academy …              205         64              269       0.762
## 13 E.O. Mun…               67         22               89       0.753
## # … with 4 more variables: EBRW_Total_Tested <dbl>, EBRW_Benchmark_PCT <dbl>,
## #   Math_Total_Tested <dbl>, Math_Benchmark_PCT <dbl>
SouthSide_Range %>%
  arrange(desc(Math_Benchmark_PCT))
## # A tibble: 13 x 9
##    Schl_Name Free_Reduced_Pr… Paid_Meals TOTAL_ENROLLMENT Percent_FRL
##    <chr>                <dbl>      <dbl>            <dbl>       <dbl>
##  1 Southpor…             1794        597             2391       0.750
##  2 IN Math …              529        159              688       0.769
##  3 East Chi…              831        278             1109       0.749
##  4 South Si…             1047        338             1385       0.756
##  5 GEO Next…              137         42              179       0.765
##  6 Academy …              205         64              269       0.762
##  7 Vigo Vir…              252         88              340       0.741
##  8 E.O. Mun…               67         22               89       0.753
##  9 Phalen V…              388        128              516       0.752
## 10 Excel Ce…              226         83              309       0.731
## 11 Excel Ce…              217         77              294       0.738
## 12 James an…              297         98              395       0.752
## 13 Christel…              534        171              705       0.757
## # … with 4 more variables: EBRW_Total_Tested <dbl>, EBRW_Benchmark_PCT <dbl>,
## #   Math_Total_Tested <dbl>, Math_Benchmark_PCT <dbl>

Out of the schools that fall between 73-77% of students with free reduced lunch, South Side High School falls in 6th out of 13 schools in the percentage of EBRW scores above the benchmark, and 4th out of 13 schools in the percentage of Math scores above the benchmark.

TheBigFive <- SAT_2022_EBRW %>%

  left_join(SAT_2022_Math, by = "Schl_Name") %>%

  left_join(School_Enrollment, by = "Schl_Name") %>%

  filter(Schl_Name == "R Nelson Snider High School" | Schl_Name == "Wayne High School" | Schl_Name == "South Side High School" | Schl_Name == "North Side High School" | Schl_Name == "Northrop High School") %>%

  select(Schl_Name, EBRW_Benchmark_PCT, Math_Benchmark_PCT, Percent_FRL)

 

TheBigFive
## # A tibble: 5 x 4
##   Schl_Name                   EBRW_Benchmark_PCT Math_Benchmark_PCT Percent_FRL
##   <chr>                                    <dbl>              <dbl>       <dbl>
## 1 North Side High School                   0.345             0.129        0.679
## 2 R Nelson Snider High School              0.433             0.238        0.481
## 3 South Side High School                   0.211             0.0744       0.756
## 4 Wayne High School                        0.34              0.12         0.655
## 5 Northrop High School                     0.411             0.185        0.541
ggplot(TheBigFive, aes(x = EBRW_Benchmark_PCT, y = Math_Benchmark_PCT, color = Schl_Name)) +

  geom_point() +

  labs(

    x = "Math Benchmark Percentage",

    y = "English Benchmark Percentage",

    fill = "School",

    title = "Math and English Benchmark % of these 5 schools")  + theme(axis.text.x = element_text(angle = 60, hjust = 1))