Skip to contents

The obt package contains a series of functions to recode report card data into commonly used variables.

Report Card Marks to Achievement Levels


ele_rc |> 
  mutate(reading_levels = obt_recode_rc_to_levels(reading)) |> 
  select(school, id, reading, reading_levels) |> 
  slice_sample(n = 10)
#> # A tibble: 10 × 4
#>    school                            id reading reading_levels
#>    <chr>                          <int> <chr>   <fct>         
#>  1 Southpark Elementary School   498800 D-      Level 1       
#>  2 Springfield Elementary School 345317 75      Level 3       
#>  3 Degrassi Community School     448177 C-      Level 2       
#>  4 Shelbyville Elementary School 322254 C+      Level 2       
#>  5 Shelbyville Elementary School 143869 B-      Level 3       
#>  6 Degrassi Community School     357624 B-      Level 3       
#>  7 Springfield Elementary School 385683 B+      Level 3       
#>  8 Shelbyville Elementary School 553525 83      Level 4       
#>  9 Springfield Elementary School 206225 82      Level 4       
#> 10 Watkins Middle School         211202 C       Level 2

Report Card Marks to Met Standard / Did Not Meet Standard


sec_rc |> 
  mutate(final_ps = obt_recode_rc_L34(final)) |> 
  select(school, id, course_number, final, final_ps) |> 
  slice_sample(n = 10)
#> # A tibble: 10 × 5
#>    school                     id course_number final final_ps             
#>    <chr>                   <int> <chr>         <chr> <chr>                
#>  1 Ridgemont HS           873638 SNC1DL        91    met_standard         
#>  2 Shermer High School    755191 SNC1D         92    met_standard         
#>  3 Ridgemont HS           645212 ENG2D         88    met_standard         
#>  4 Degrassi High          715889 SNC1P         55    did_not_meet_standard
#>  5 Degrassi High          705256 GLS1O         70    met_standard         
#>  6 Ridgemont HS           718473 HHS4U         74    met_standard         
#>  7 Degrassi High          641635 MPM2D         92    met_standard         
#>  8 Ridgemont HS           873033 ENG1P         60    did_not_meet_standard
#>  9 Westerburg High School 565324 ENG4U         85    met_standard         
#> 10 Ridgemont HS           611516 CHC2D         77    met_standard

Report Card Marks to Pass Fail

Results that are not the traditional alpha/numeric mark remain the same. For example ALT (alternative education), I (Insufficent) and NA (missing data).


ele_rc |> 
  mutate(read_pass_fail = obt_recode_rc_pass_fail(reading)) |> 
  select(school, id, reading, read_pass_fail) |> 
  arrange(read_pass_fail) |> 
  group_by(read_pass_fail) |> 
  slice_sample(n = 2)
#> # A tibble: 10 × 4
#> # Groups:   read_pass_fail [5]
#>    school                            id reading read_pass_fail
#>    <chr>                          <int> <chr>   <chr>         
#>  1 Watkins Middle School         196803 ALT     ALT           
#>  2 Degrassi Community School     375101 ALT     ALT           
#>  3 Springfield Elementary School 237814 I       I             
#>  4 Watkins Middle School         247709 I       I             
#>  5 Shelbyville Elementary School 362950 R       fail          
#>  6 Springfield Elementary School 340286 R       fail          
#>  7 Degrassi Community School     198193 A-      pass          
#>  8 Springfield Elementary School 379305 78      pass          
#>  9 Shelbyville Elementary School 117376 NA      NA            
#> 10 Watkins Middle School         396929 NA      NA

Report Letter Grade to Percent

This function will take a column that contains all alpha grades, or a combination of alpha and numeric grades, and convert the alpha grades to a numeric equivalent.

NOTE - this may produce a warning message: NAs introduced by coercion. This means that any non-standard alpha mark has been converted to NA.

  • A+ = 90
  • A = 85”
  • A- = 80
  • B+ = 78
  • B = 75
  • B- = 72”
  • C+ = 68
  • C = 65
  • C- = 62
  • D+ = 58
  • D = 55
  • D- = 52
  • D- = 52
  • R = 45
  • All else = NA

set.seed(168)

ele_rc |> 
  mutate(math_numeric = obt_recode_letter_percent(mathematics)) |> 
  select(school, id, mathematics, math_numeric) |> 
  slice_sample(n = 10)
#> # A tibble: 10 × 4
#>    school                            id mathematics math_numeric
#>    <chr>                          <int> <chr>              <dbl>
#>  1 Shelbyville Elementary School 141128 C+                    68
#>  2 Shelbyville Elementary School 251837 73                    73
#>  3 Watkins Middle School         527509 B+                    78
#>  4 Springfield Elementary School 337938 78                    78
#>  5 Shelbyville Elementary School 552172 78                    78
#>  6 Southpark Elementary School   309292 A-                    80
#>  7 Shelbyville Elementary School 333046 50                    50
#>  8 Watkins Middle School         211346 C+                    68
#>  9 Watkins Middle School         343537 A-                    80
#> 10 Springfield Elementary School 530202 C-                    62