Skip to contents

The obt_summary_table function allows for quick summaries of one or two variables. It returns a tibble with the grouping variable(s), count and percentage within that group. The resulting tibble can easily be piped into a ggplot2 function for visualisation.

One Variable Summary

library(obt)
library(dplyr)
library(ggplot2)
df <- ele_rc

df |> 
  obt_summary_table(school)
#> # A tibble: 5 × 3
#>   school                            n  perc
#>   <chr>                         <int> <dbl>
#> 1 Degrassi Community School       516 0.206
#> 2 Shelbyville Elementary School   763 0.305
#> 3 Southpark Elementary School     326 0.130
#> 4 Springfield Elementary School   489 0.196
#> 5 Watkins Middle School           406 0.162

Two Variable Summary


df |> 
  obt_summary_table(school, grade) |> 
  print(n = Inf)
#> # A tibble: 40 × 4
#> # Groups:   school [5]
#>    school                        grade     n   perc
#>    <chr>                         <chr> <int>  <dbl>
#>  1 Degrassi Community School     1        55 0.107 
#>  2 Degrassi Community School     2        60 0.116 
#>  3 Degrassi Community School     3        60 0.116 
#>  4 Degrassi Community School     4        60 0.116 
#>  5 Degrassi Community School     5        78 0.151 
#>  6 Degrassi Community School     6        60 0.116 
#>  7 Degrassi Community School     7        79 0.153 
#>  8 Degrassi Community School     8        64 0.124 
#>  9 Shelbyville Elementary School 1        94 0.123 
#> 10 Shelbyville Elementary School 2       109 0.143 
#> 11 Shelbyville Elementary School 3        84 0.110 
#> 12 Shelbyville Elementary School 4        93 0.122 
#> 13 Shelbyville Elementary School 5        95 0.125 
#> 14 Shelbyville Elementary School 6       102 0.134 
#> 15 Shelbyville Elementary School 7       105 0.138 
#> 16 Shelbyville Elementary School 8        81 0.106 
#> 17 Southpark Elementary School   1        46 0.141 
#> 18 Southpark Elementary School   2        34 0.104 
#> 19 Southpark Elementary School   3        36 0.110 
#> 20 Southpark Elementary School   4        50 0.153 
#> 21 Southpark Elementary School   5        44 0.135 
#> 22 Southpark Elementary School   6        35 0.107 
#> 23 Southpark Elementary School   7        40 0.123 
#> 24 Southpark Elementary School   8        41 0.126 
#> 25 Springfield Elementary School 1        51 0.104 
#> 26 Springfield Elementary School 2        66 0.135 
#> 27 Springfield Elementary School 3        57 0.117 
#> 28 Springfield Elementary School 4        71 0.145 
#> 29 Springfield Elementary School 5        53 0.108 
#> 30 Springfield Elementary School 6        66 0.135 
#> 31 Springfield Elementary School 7        66 0.135 
#> 32 Springfield Elementary School 8        59 0.121 
#> 33 Watkins Middle School         1        47 0.116 
#> 34 Watkins Middle School         2        38 0.0936
#> 35 Watkins Middle School         3        52 0.128 
#> 36 Watkins Middle School         4        58 0.143 
#> 37 Watkins Middle School         5        57 0.140 
#> 38 Watkins Middle School         6        49 0.121 
#> 39 Watkins Middle School         7        52 0.128 
#> 40 Watkins Middle School         8        53 0.131

Visualisation

df |> 
  obt_summary_table(school) |> 
  ggplot (aes (x = school, y = perc)) + 
  geom_col (fill = "#bcc4d7") + 
  scale_x_discrete(label = scales::wrap_format(10)) + 
  scale_y_continuous(labels = scales::percent_format(), 
                     limits = c(0, 1)) + 
  geom_text (aes (label = scales::percent(perc)), 
             vjust = -1) + 
  labs (title = "Percentage of Students by Elementary Schools", 
        x = NULL, 
        y = "Percent") + 
  theme_minimal()