Supplement TSCPB: Teachers’ sociodemographic characteristics and professional background

Author

Pawel R. Kulawiak

last modified

November 21, 2024

1 R packages

Code
library(tidyverse)
library(gt)
library(readxl)
library(gtExtras)
library(devtools)
library(knitr)
write_bib(file = "packages.bib")

2 Data import and manipulation

Code
DATA <- read_xlsx("SURVEY_DATA.xlsx")

DATA <-
  DATA %>%
  select(-where( ~ all(is.na(.)))) %>%
  filter(`teilnahme[teilnahme]` == "Y")

DATA <-
  DATA[9:81] %>%
  mutate(NA_CHECK = rowSums(!is.na(.))) %>%
  filter(NA_CHECK > 0) %>%
  filter(AB7 == 0) %>% # exclude special education schools
  mutate(SED_INC = case_when(AB10 == 0 & AB11 == 0 ~ 0,
                             AB10 == 1 & AB11 == 0 ~ 1,
                             AB10 == 0 & AB11 == 1 ~ 2,
                             AB10 == 1 & is.na(AB11) ~ 1,
                             is.na(AB10) & AB11 == 1 ~ 2,
                             AB10 == 1 & AB11 == 1 ~ 3,
                             is.na(AB10) & is.na(AB11) ~ NA,
                             AB10 == 0 & is.na(AB11) ~ NA,
                             is.na(AB10) & AB11 == 0 ~ NA)) %>%
  rename_with(~ stringr::str_replace_all(., "\\[", "_") %>%
                 stringr::str_replace_all(., "\\]", ""))

3 Custom functions

Code
describe <-
  function(var) {
    DATA %>%
      group_by({{var}}) %>%
      reframe(n = n()) %>%
      rename(V1 = names(.)[1]) %>% 
      mutate(percent = (n / sum(n))) %>%
      mutate(INDEX = n) %>%
      mutate(percent = (percent*100) %>% round(1)) %>%
      relocate(percent, .after = last_col()) %>%
      mutate(n = NULL)
  }

school_subject <-
  function(var) {
    DATA %>%
      group_by({{var}}) %>%
      reframe(n = n()) %>%
      rename(V1 = names(.)[1]) %>% 
      mutate(percent = (n / sum(n))) %>%
      mutate(INDEX = n) %>%
      mutate(percent = (percent*100) %>% round(1)) %>%
      relocate(percent, .after = last_col()) %>%
      mutate(n = NULL) %>%
      na.omit()
  }

4 Official school statistics (German Federal Statistical Office)

Statistisches Bundesamt: Statistischer Bericht (Allgemeinbildende Schulen)
Code
OSS <- # official school statistics
  read_xlsx("statistischer-bericht-allgemeinbildende-schulen-2110100237005.xlsx", sheet = "csv-21111-21")
Code
SEX_OSS <-
  OSS %>%
  filter(Bundesland == "Niedersachsen") %>% 
  filter(Altersgruppe == "Insgesamt") %>%
  filter(Beschaeftigungsumfang == "Voll- und Teilzeitbeschäftigte") %>%
  filter(Schulart == "Grundschulen" |
           Schulart == "Hauptschulen" |
           Schulart == "Schularten mit mehreren Bildungsgängen" |
           Schulart == "Realschulen" |
           Schulart == "Gymnasien" |
           Schulart == "Integrierte Gesamtschulen") %>%
  filter(Geschlecht != "Insgesamt") %>%
  group_by(Geschlecht) %>%
  reframe(n_sex = sum(Lehrkraefte_Anzahl)) %>%
  mutate(n_percent = (n_sex / sum(n_sex)) * 100)
Code
AGE_OSS <-
  OSS %>%
  filter(Bundesland == "Niedersachsen") %>% 
  filter(Altersgruppe != "Insgesamt") %>%
  filter(Beschaeftigungsumfang == "Voll- und Teilzeitbeschäftigte") %>%
  filter(Schulart == "Grundschulen" |
           Schulart == "Hauptschulen" |
           Schulart == "Schularten mit mehreren Bildungsgängen" |
           Schulart == "Realschulen" |
           Schulart == "Gymnasien" |
           Schulart == "Integrierte Gesamtschulen") %>%
  filter(Geschlecht == "Insgesamt") %>%
  mutate(Altersgruppe = case_when(
    Altersgruppe %in% c("unter 30", "30-35") ~ "<34",
    Altersgruppe %in% c("35-40", "40-45") ~ "35-44",
    Altersgruppe %in% c("45-50", "50-55") ~ "45-54",
    Altersgruppe %in% c("55-60", "60-65", "65 und älter") ~ ">54") %>% as_factor()) %>%
  group_by(Altersgruppe) %>%
  reframe(n_age = sum(Lehrkraefte_Anzahl)) %>%
  mutate(n_percent = (n_age / sum(n_age)) * 100)

5 Table: Teachers’ sociodemographic characteristics

Code
NAMES_1 <-
  c("26-35", "36-45", "46-55", ">55",
    "male", "female", "prefer not to say", "missing value")

INDEX_2 <-
  c(AGE_OSS$n_age, SEX_OSS$n_sex, 0, 0)

percent_2 <-
  c(AGE_OSS$n_percent, SEX_OSS$n_percent, 0, 0)

rbind(
  describe(AB14), # age
  describe(AB15)  # sex
  ) %>%
  mutate(V1 = NAMES_1) %>% 
  mutate(INDEX_2 = INDEX_2) %>%
  mutate(percent_2 = percent_2) %>%
  gt() %>%
  gt_plt_bar_pct(column = percent,
                 scaled = T,
                 labels = TRUE,
                 fill = "black",
                 width = 100,
                 height = 20,
                 label_cutoff = 0.5,
                 font_size = "12px") %>%
  gt_plt_bar_pct(column = percent_2,
                 scaled = T,
                 labels = TRUE,
                 fill = "black",
                 width = 100,
                 height = 20,
                 label_cutoff = 0.5,
                 font_size = "12px") %>% 
  cols_align("left") %>%
  cols_label(V1 = "",
             INDEX = md("***N***"),
             percent = md("***%***"),
             INDEX_2 = md("***N***"),
             percent_2 = md("***%***")) %>%
  tab_row_group(label = md("*sex*"), rows = 5:8) %>%
  tab_row_group(label = md("*age in years^2^*"), rows = 1:4) %>%
  tab_style(style = list(cell_text(indent = pct(10))), locations = cells_body(columns = V1)) %>% 
  tab_options(column_labels.background.color = "gray95",
              footnotes.background.color = "gray95") %>%
  tab_style(style = cell_fill(color = "gray95"), locations = cells_row_groups(groups = everything())) %>%
  tab_spanner(label = md("*teacher<br>survey*"), columns = c(INDEX, percent)) %>%
  tab_spanner(label = md("*official<br>school statistics^1^*"), columns = c(INDEX_2, percent_2)) %>%
  tab_footnote(md("^1^*German Federal Statistical Office (EVAS-Number 21111):<br>
                  Official school statistics for Lower Saxony (school year 2022/2023)<br>
                  ^2^Age brackets used in this table are based on the teacher survey<br>
                  and differ slightly from those used in official school statistics:<br>
                  <34, 35-44, 45-54, >54*")) %>%
  cols_align(align = "center", columns = starts_with("per")) %>%
  cols_align(align = "right", columns = starts_with("IND")) %>%
  cols_width(starts_with("V1") ~ pct(33)) %>%
  tab_options(table.align = "left")
teacher
survey
official
school statistics1
N % N %
age in years2
26-35 43
20.5%
14154
21.9%
36-45 70
33.3%
21015
32.5%
46-55 66
31.4%
18567
28.7%
>55 31
14.8%
11019
17%
sex
male 29
13.8%
17963
27.7%
female 178
84.8%
46792
72.3%
prefer not to say 1
0.5%
0
0%
missing value 2
1%
0
0%
1German Federal Statistical Office (EVAS-Number 21111):
Official school statistics for Lower Saxony (school year 2022/2023)
2Age brackets used in this table are based on the teacher survey
and differ slightly from those used in official school statistics:
<34, 35-44, 45-54, >54

6 Table: Teachers’ professional background

Code
NAMES <-
  c("1-4 elementary education", "5-10 lower secondary education", "11-13 upper secondary education",
    "no", "special education", "inclusive education", "special and inclusive", "missing value",
    "<1", "1-2", "3-5", "6-10", "11-20", "21-30", "31-40",
    "German", "math", "natural science", "physical education", "other subjects",
    paste0(5:1, c(" very positive", "", "", "", " very negative")), "missing value")

rbind(
  school_subject(AB6_1), # grade 1-4
  school_subject(AB6_2), # grade 5-10
  school_subject(AB6_3), # grade 11-13
  describe(SED_INC), # teacher training
  describe(AB13), # Work experience as a teacher
  school_subject(AB9_1), # German
  school_subject(AB9_2), # math
  school_subject(AB9_3), # natural science
  school_subject(AB9_4), # physical education
  school_subject(AB9_5), # other subjects
  describe((AB12 - 6) %>% abs()) # attitude towards inclusive education
) %>%
  mutate(V1 = NAMES) %>% 
  gt() %>%
  gt_plt_bar_pct(column = percent,
                 scaled = T,
                 labels = TRUE,
                 fill = "black",
                 width = 100,
                 height = 20,
                 label_cutoff = 0.5,
                 font_size = "12px") %>% 
  cols_align("left") %>%
  cols_label(V1 = "",
             INDEX = md("***N***"),
             percent = md("***%***")) %>%
  tab_row_group(label = md("*attitude towards inclusive education^1^*"), rows = 21:26) %>%
  tab_row_group(label = md("*teaching... (multiple answers possible)*"), rows = 16:20) %>%
  tab_row_group(label = md("*work experience as a teacher in years*"), rows = 9:15) %>%
  tab_row_group(label = md("*teacher training in special or inclusive education*"), rows = 4:8) %>%
  tab_row_group(label = md("*teaching in grades... (multiple answers possible)*"), rows = 1:3) %>%
  tab_style(style = list(cell_text(indent = pct(5))), locations = cells_body(columns = V1)) %>% 
  tab_options(column_labels.background.color = "gray95",
  footnotes.background.color = "gray95") %>%
  tab_style(style = cell_fill(color = "gray95"), locations = cells_row_groups(groups = everything())) %>%
  cols_align(align = "center", columns = starts_with("percent")) %>%
  cols_align(align = "right", columns = starts_with("INDEX")) %>%
  cols_width(starts_with("V1") ~ pct(66)) %>%
  tab_options(table.align = "left") %>%
  tab_options(table.align = "left") %>%
  tab_footnote(md('^1^*The scoring of the rating scale has been reversed.
                   Scoring used<br>in the teacher survey:
                   1 = "very positive" and 5 = "very negative"*'))
N %
teaching in grades… (multiple answers possible)
1-4 elementary education 114
54.3%
5-10 lower secondary education 97
46.2%
11-13 upper secondary education 34
16.2%
teacher training in special or inclusive education
no 188
89.5%
special education 9
4.3%
inclusive education 3
1.4%
special and inclusive 8
3.8%
missing value 2
1%
work experience as a teacher in years
<1 4
1.9%
1-2 8
3.8%
3-5 28
13.3%
6-10 28
13.3%
11-20 63
30%
21-30 65
31%
31-40 14
6.7%
teaching… (multiple answers possible)
German 118
56.2%
math 103
49%
natural science 80
38.1%
physical education 51
24.3%
other subjects 152
72.4%
attitude towards inclusive education1
5 very positive 8
3.8%
4 32
15.2%
3 68
32.4%
2 71
33.8%
1 very negative 29
13.8%
missing value 2
1%
1The scoring of the rating scale has been reversed. Scoring used
in the teacher survey: 1 = “very positive” and 5 = “very negative”

6.1 Elementary school teachers in Lower Saxony (official school statistics)

Code
OSS %>%
  filter(Bundesland == "Niedersachsen") %>% 
  filter(Altersgruppe == "Insgesamt") %>%
  filter(Beschaeftigungsumfang == "Voll- und Teilzeitbeschäftigte") %>%
  filter(Schulart == "Grundschulen" |
           Schulart == "Hauptschulen" |
           Schulart == "Schularten mit mehreren Bildungsgängen" |
           Schulart == "Realschulen" |
           Schulart == "Gymnasien" |
           Schulart == "Integrierte Gesamtschulen") %>%
  filter(Geschlecht == "Insgesamt") %>%
  group_by(Schulart) %>%
  reframe(n = sum(Lehrkraefte_Anzahl)) %>%
  mutate(percent = ((n / sum(n)) * 100) %>% round(1)) %>%
  gt() %>% 
  tab_footnote("Grundschulen = Elementary schools") %>%
  tab_options(table.align = "left")
Schulart n percent
Grundschulen 21012 32.4
Gymnasien 19117 29.5
Hauptschulen 2590 4.0
Integrierte Gesamtschulen 7841 12.1
Realschulen 4169 6.4
Schularten mit mehreren Bildungsgängen 10026 15.5
Grundschulen = Elementary schools

6.2 Sex (elementary education vs. secondary education)

Code
DATA %>%
  filter(AB6_1 == "Y") %>% 
  group_by(AB15) %>%
  reframe(n = n()) %>%
  mutate(percent = ((n / sum(n)) * 100) %>% round(1)) %>%
  mutate(AB15 = case_when(AB15 == 1 ~ "male", AB15 == 2 ~ "female", AB15 == 4 ~  "prefer not to say")) %>%  
  gt() %>%
  tab_header("elementary education (teacher survey)") %>%
  tab_options(table.align = "left")
elementary education (teacher survey)
AB15 n percent
male 10 8.8
female 102 89.5
prefer not to say 1 0.9
NA 1 0.9
Code
DATA %>%
  filter(AB6_2 == "Y" | AB6_3 == "Y") %>% 
  group_by(AB15) %>%
  reframe(n = n()) %>%
  mutate(percent = ((n / sum(n)) * 100) %>% round(1)) %>%
  mutate(AB15 = case_when(AB15 == 1 ~ "male", AB15 == 2 ~ "female", AB15 == 4 ~  "prefer not to say")) %>%  
  gt() %>%
  tab_header("secondary education (teacher survey)") %>%
  tab_options(table.align = "left")
secondary education (teacher survey)
AB15 n percent
male 21 21.2
female 77 77.8
NA 1 1.0
Code
OSS %>%
  filter(Bundesland == "Niedersachsen") %>% 
  filter(Altersgruppe == "Insgesamt") %>%
  filter(Beschaeftigungsumfang == "Voll- und Teilzeitbeschäftigte") %>%
  filter(Schulart == "Grundschulen") %>%
  filter(Geschlecht != "Insgesamt") %>%
  group_by(Geschlecht) %>%
  reframe(n = sum(Lehrkraefte_Anzahl)) %>%
  mutate(percent = ((n / sum(n)) * 100) %>% round(1)) %>%
  gt() %>%
  tab_header("elementary education (official school statistics)") %>% 
  tab_footnote(md("männlich = male<br>weiblich = female")) %>%
  tab_options(table.align = "left")
elementary education (official school statistics)
Geschlecht n percent
männlich 2138 10.2
weiblich 18874 89.8
männlich = male
weiblich = female
Code
OSS %>%
  filter(Bundesland == "Niedersachsen") %>% 
  filter(Altersgruppe == "Insgesamt") %>%
  filter(Beschaeftigungsumfang == "Voll- und Teilzeitbeschäftigte") %>%
  filter(Schulart == "Hauptschulen" |
           Schulart == "Schularten mit mehreren Bildungsgängen" |
           Schulart == "Realschulen" |
           Schulart == "Gymnasien" |
           Schulart == "Integrierte Gesamtschulen") %>%
  filter(Geschlecht != "Insgesamt") %>% 
  group_by(Schulart) %>%
  mutate(total_within_schulart = sum(Lehrkraefte_Anzahl)) %>% 
  ungroup() %>% 
  group_by(Schulart, Geschlecht) %>%
  reframe(n = sum(Lehrkraefte_Anzahl),
          total = total_within_schulart) %>%
  mutate(percent = ((n / total) * 100) %>% round(1)) %>%
  gt() %>%
  tab_header("secondary education (official school statistics)") %>% 
  tab_footnote(md("männlich = male<br>weiblich = female")) %>%
  tab_options(table.align = "left")
secondary education (official school statistics)
Schulart Geschlecht n total percent
Gymnasien männlich 7518 19117 39.3
Gymnasien weiblich 11599 19117 60.7
Hauptschulen männlich 853 2590 32.9
Hauptschulen weiblich 1737 2590 67.1
Integrierte Gesamtschulen männlich 2933 7841 37.4
Integrierte Gesamtschulen weiblich 4908 7841 62.6
Realschulen männlich 1354 4169 32.5
Realschulen weiblich 2815 4169 67.5
Schularten mit mehreren Bildungsgängen männlich 3167 10026 31.6
Schularten mit mehreren Bildungsgängen weiblich 6859 10026 68.4
männlich = male
weiblich = female
Code
OSS %>%
  filter(Bundesland == "Niedersachsen") %>% 
  filter(Altersgruppe == "Insgesamt") %>%
  filter(Beschaeftigungsumfang == "Voll- und Teilzeitbeschäftigte") %>%
  filter(Schulart == "Hauptschulen" |
           Schulart == "Schularten mit mehreren Bildungsgängen" |
           Schulart == "Realschulen" |
           Schulart == "Gymnasien" |
           Schulart == "Integrierte Gesamtschulen") %>%
  filter(Geschlecht != "Insgesamt") %>% 
  mutate(Schulart = fct_collapse(Schulart, secondary =
                                   c("Hauptschulen",
                                     "Schularten mit mehreren Bildungsgängen",
                                     "Realschulen",
                                     "Gymnasien",
                                     "Integrierte Gesamtschulen"))) %>%
  group_by(Schulart, Geschlecht) %>%
  reframe(n = sum(Lehrkraefte_Anzahl)) %>%
  mutate(percent = ((n / sum(n)) * 100) %>% round(1)) %>%
  gt() %>%
  tab_header("secondary education (official school statistics)") %>% 
  tab_footnote(md("männlich = male<br>weiblich = female")) %>%
  tab_options(table.align = "left")
secondary education (official school statistics)
Schulart Geschlecht n percent
secondary männlich 15825 36.2
secondary weiblich 27918 63.8
männlich = male
weiblich = female

6.3 Age (elementary education vs. secondary education)

Code
DATA %>%
  filter(AB6_1 == "Y") %>% 
  group_by(AB14) %>%
  reframe(n = n()) %>%
  mutate(percent = ((n / sum(n)) * 100) %>% round(1)) %>%
  mutate(AB14 = c("26-35", "36-45", "46-55", ">55")) %>% 
  gt() %>%
  tab_header("elementary education (teacher survey)") %>%
  tab_options(table.align = "left")
elementary education (teacher survey)
AB14 n percent
26-35 24 21.1
36-45 30 26.3
46-55 38 33.3
>55 22 19.3
Code
DATA %>%
  filter(AB6_2 == "Y" | AB6_3 == "Y") %>% 
  group_by(AB14) %>%
  reframe(n = n()) %>%
  mutate(percent = ((n / sum(n)) * 100) %>% round(1)) %>%
  mutate(AB14 = c("26-35", "36-45", "46-55", ">55")) %>% 
  gt() %>%
  tab_header("secondary education (teacher survey)") %>%
  tab_options(table.align = "left")
secondary education (teacher survey)
AB14 n percent
26-35 19 19.2
36-45 40 40.4
46-55 28 28.3
>55 12 12.1
Code
OSS %>%
  filter(Bundesland == "Niedersachsen") %>% 
  filter(Altersgruppe != "Insgesamt") %>%
  filter(Beschaeftigungsumfang == "Voll- und Teilzeitbeschäftigte") %>%
  filter(Schulart == "Grundschulen") %>%
  filter(Geschlecht == "Insgesamt") %>%
  mutate(Altersgruppe = case_when(
    Altersgruppe %in% c("unter 30", "30-35") ~ "<34",
    Altersgruppe %in% c("35-40", "40-45") ~ "35-44",
    Altersgruppe %in% c("45-50", "50-55") ~ "45-54",
    Altersgruppe %in% c("55-60", "60-65", "65 und älter") ~ ">54") %>% as_factor()) %>%
  group_by(Altersgruppe) %>%
  reframe(n = sum(Lehrkraefte_Anzahl)) %>%
  mutate(percent = ((n / sum(n)) * 100) %>% round(1)) %>%
  gt() %>%
  tab_header("elementary education (official school statistics)") %>%
  tab_options(table.align = "left")
elementary education (official school statistics)
Altersgruppe n percent
<34 4642 22.1
35-44 6016 28.6
45-54 6729 32.0
>54 3625 17.3
Code
OSS %>%
  filter(Bundesland == "Niedersachsen") %>% 
  filter(Altersgruppe != "Insgesamt") %>%
  filter(Beschaeftigungsumfang == "Voll- und Teilzeitbeschäftigte") %>%
  filter(Schulart == "Hauptschulen" |
           Schulart == "Schularten mit mehreren Bildungsgängen" |
           Schulart == "Realschulen" |
           Schulart == "Gymnasien" |
           Schulart == "Integrierte Gesamtschulen") %>%
  filter(Geschlecht != "Insgesamt") %>% 
  mutate(Schulart = fct_collapse(Schulart, secondary =
                                   c("Hauptschulen",
                                     "Schularten mit mehreren Bildungsgängen",
                                     "Realschulen",
                                     "Gymnasien",
                                     "Integrierte Gesamtschulen"))) %>%
  
  mutate(Altersgruppe = case_when(
    Altersgruppe %in% c("unter 30", "30-35") ~ "<34",
    Altersgruppe %in% c("35-40", "40-45") ~ "35-44",
    Altersgruppe %in% c("45-50", "50-55") ~ "45-54",
    Altersgruppe %in% c("55-60", "60-65", "65 und älter") ~ ">54") %>% as_factor()) %>%
  group_by(Schulart, Altersgruppe) %>%
  reframe(n = sum(Lehrkraefte_Anzahl)) %>%
  mutate(percent = ((n / sum(n)) * 100) %>% round(1)) %>%
  gt() %>%
  tab_header("secondary education (official school statistics)") %>%
  tab_options(table.align = "left")
secondary education (official school statistics)
Schulart Altersgruppe n percent
secondary <34 9512 21.7
secondary 35-44 14999 34.3
secondary 45-54 11838 27.1
secondary >54 7394 16.9

7 R session info

Code
session_info()
## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value
##  version  R version 4.4.2 (2024-10-31 ucrt)
##  os       Windows 11 x64 (build 22631)
##  system   x86_64, mingw32
##  ui       RTerm
##  language (EN)
##  collate  German_Germany.utf8
##  ctype    German_Germany.utf8
##  tz       Europe/Berlin
##  date     2024-11-21
##  pandoc   3.2 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  package     * version  date (UTC) lib source
##  base64enc     0.1-3    2015-07-28 [1] CRAN (R 4.4.0)
##  cachem        1.1.0    2024-05-16 [1] CRAN (R 4.4.2)
##  cellranger    1.1.0    2016-07-27 [1] CRAN (R 4.4.2)
##  cli           3.6.3    2024-06-21 [1] CRAN (R 4.4.2)
##  colorspace    2.1-1    2024-07-26 [1] CRAN (R 4.4.2)
##  commonmark    1.9.2    2024-10-04 [1] CRAN (R 4.4.2)
##  devtools    * 2.4.5    2022-10-11 [1] CRAN (R 4.4.2)
##  digest        0.6.37   2024-08-19 [1] CRAN (R 4.4.2)
##  dplyr       * 1.1.4    2023-11-17 [1] CRAN (R 4.4.2)
##  ellipsis      0.3.2    2021-04-29 [1] CRAN (R 4.4.2)
##  evaluate      1.0.1    2024-10-10 [1] CRAN (R 4.4.2)
##  fansi         1.0.6    2023-12-08 [1] CRAN (R 4.4.2)
##  fastmap       1.2.0    2024-05-15 [1] CRAN (R 4.4.2)
##  fontawesome   0.5.3    2024-11-16 [1] CRAN (R 4.4.2)
##  forcats     * 1.0.0    2023-01-29 [1] CRAN (R 4.4.2)
##  fs            1.6.5    2024-10-30 [1] CRAN (R 4.4.2)
##  generics      0.1.3    2022-07-05 [1] CRAN (R 4.4.2)
##  ggplot2     * 3.5.1    2024-04-23 [1] CRAN (R 4.4.2)
##  glue          1.8.0    2024-09-30 [1] CRAN (R 4.4.2)
##  gt          * 0.11.1   2024-10-04 [1] CRAN (R 4.4.2)
##  gtable        0.3.6    2024-10-25 [1] CRAN (R 4.4.2)
##  gtExtras    * 0.5.0    2023-09-15 [1] CRAN (R 4.4.2)
##  hms           1.1.3    2023-03-21 [1] CRAN (R 4.4.2)
##  htmltools     0.5.8.1  2024-04-04 [1] CRAN (R 4.4.2)
##  htmlwidgets   1.6.4    2023-12-06 [1] CRAN (R 4.4.2)
##  httpuv        1.6.15   2024-03-26 [1] CRAN (R 4.4.2)
##  jsonlite      1.8.9    2024-09-20 [1] CRAN (R 4.4.2)
##  knitr       * 1.49     2024-11-08 [1] CRAN (R 4.4.2)
##  later         1.3.2    2023-12-06 [1] CRAN (R 4.4.2)
##  lifecycle     1.0.4    2023-11-07 [1] CRAN (R 4.4.2)
##  lubridate   * 1.9.3    2023-09-27 [1] CRAN (R 4.4.2)
##  magrittr      2.0.3    2022-03-30 [1] CRAN (R 4.4.2)
##  markdown      1.13     2024-06-04 [1] CRAN (R 4.4.2)
##  memoise       2.0.1    2021-11-26 [1] CRAN (R 4.4.2)
##  mime          0.12     2021-09-28 [1] CRAN (R 4.4.0)
##  miniUI        0.1.1.1  2018-05-18 [1] CRAN (R 4.4.2)
##  munsell       0.5.1    2024-04-01 [1] CRAN (R 4.4.2)
##  paletteer     1.6.0    2024-01-21 [1] CRAN (R 4.4.2)
##  pillar        1.9.0    2023-03-22 [1] CRAN (R 4.4.2)
##  pkgbuild      1.4.5    2024-10-28 [1] CRAN (R 4.4.2)
##  pkgconfig     2.0.3    2019-09-22 [1] CRAN (R 4.4.2)
##  pkgload       1.4.0    2024-06-28 [1] CRAN (R 4.4.2)
##  profvis       0.4.0    2024-09-20 [1] CRAN (R 4.4.2)
##  promises      1.3.0    2024-04-05 [1] CRAN (R 4.4.2)
##  purrr       * 1.0.2    2023-08-10 [1] CRAN (R 4.4.2)
##  R6            2.5.1    2021-08-19 [1] CRAN (R 4.4.2)
##  Rcpp          1.0.13-1 2024-11-02 [1] CRAN (R 4.4.2)
##  readr       * 2.1.5    2024-01-10 [1] CRAN (R 4.4.2)
##  readxl      * 1.4.3    2023-07-06 [1] CRAN (R 4.4.2)
##  rematch2      2.1.2    2020-05-01 [1] CRAN (R 4.4.2)
##  remotes       2.5.0    2024-03-17 [1] CRAN (R 4.4.2)
##  rlang         1.1.4    2024-06-04 [1] CRAN (R 4.4.2)
##  rmarkdown     2.29     2024-11-04 [1] CRAN (R 4.4.2)
##  rstudioapi    0.17.1   2024-10-22 [1] CRAN (R 4.4.2)
##  sass          0.4.9    2024-03-15 [1] CRAN (R 4.4.2)
##  scales        1.3.0    2023-11-28 [1] CRAN (R 4.4.2)
##  sessioninfo   1.2.2    2021-12-06 [1] CRAN (R 4.4.2)
##  shiny         1.9.1    2024-08-01 [1] CRAN (R 4.4.2)
##  stringi       1.8.4    2024-05-06 [1] CRAN (R 4.4.0)
##  stringr     * 1.5.1    2023-11-14 [1] CRAN (R 4.4.2)
##  tibble      * 3.2.1    2023-03-20 [1] CRAN (R 4.4.2)
##  tidyr       * 1.3.1    2024-01-24 [1] CRAN (R 4.4.2)
##  tidyselect    1.2.1    2024-03-11 [1] CRAN (R 4.4.2)
##  tidyverse   * 2.0.0    2023-02-22 [1] CRAN (R 4.4.2)
##  timechange    0.3.0    2024-01-18 [1] CRAN (R 4.4.2)
##  tzdb          0.4.0    2023-05-12 [1] CRAN (R 4.4.2)
##  urlchecker    1.0.1    2021-11-30 [1] CRAN (R 4.4.2)
##  usethis     * 3.0.0    2024-07-29 [1] CRAN (R 4.4.1)
##  utf8          1.2.4    2023-10-22 [1] CRAN (R 4.4.2)
##  vctrs         0.6.5    2023-12-01 [1] CRAN (R 4.4.2)
##  withr         3.0.2    2024-10-28 [1] CRAN (R 4.4.2)
##  xfun          0.49     2024-10-31 [1] CRAN (R 4.4.2)
##  xml2          1.3.6    2023-12-04 [1] CRAN (R 4.4.2)
##  xtable        1.8-4    2019-04-21 [1] CRAN (R 4.4.2)
##  yaml          2.3.10   2024-07-26 [1] CRAN (R 4.4.1)
## 
##  [1] C:/Users/Pawel Kulawiak/AppData/Local/Programs/R/R-4.4.2/library
## 
## ──────────────────────────────────────────────────────────────────────────────

8 References

Iannone, Richard, Joe Cheng, Barret Schloerke, Ellis Hughes, Alexandra Lauer, JooYoung Seo, Ken Brevoort, and Olivier Roy. 2024. Gt: Easily Create Presentation-Ready Display Tables. https://gt.rstudio.com.
Mock, Thomas. 2023. gtExtras: Extending Gt for Beautiful HTML Tables. https://github.com/jthomasmock/gtExtras.
R Core Team. 2024. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
Wickham, Hadley. 2023. Tidyverse: Easily Install and Load the Tidyverse. https://tidyverse.tidyverse.org.
Wickham, Hadley, and Jennifer Bryan. 2023. Readxl: Read Excel Files. https://readxl.tidyverse.org.
Wickham, Hadley, Jim Hester, Winston Chang, and Jennifer Bryan. 2022. Devtools: Tools to Make Developing r Packages Easier. https://devtools.r-lib.org/.
Xie, Yihui. 2024. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/.