## ----setup, include = FALSE---------------------------------------------------
options(rmarkdown.html_vignette.check_title = FALSE)
knitr::opts_chunk$set(
echo = TRUE,
collapse = TRUE,
comment = "#>",
warning = FALSE,
message = FALSE,
error = FALSE,
outwidth = "100%",
fig.width = 8,
fig.height = 6,
fig.align = "center")

## -----------------------------------------------------------------------------
library(dplyr)
library(ggplot2)
library(learningtower)

#load the subset student data for the year 2018
data(student_subset_2018)
#load the countrycode data
data(countrycode)

glimpse(student_subset_2018)

## -----------------------------------------------------------------------------
selected_countries = c("AUS", "USA", "TUR", "SWE", 
                       "CHE", "NZL", "BEL", "DEU")

student_subset_2018 |> 
  group_by(country, gender) |> 
  dplyr::filter(country %in% selected_countries) |>
  dplyr::left_join(countrycode, by = "country") |> 
  ggplot(aes(x = math,
             y = country_name,
             fill = gender)) +
  geom_boxplot() +
  scale_fill_manual(values = c("#FF7F0EFF", "#1F77B4FF")) +
  theme_classic() +
  labs(x = "Math score", 
       y = "")

## -----------------------------------------------------------------------------
student_data_2012_2018 <- load_student(c(2012, 2018))

plot_data <- student_data_2012_2018 |> 
  group_by(country, year) |>  
  dplyr::filter(country %in% selected_countries) |> 
  dplyr::summarise(avg_math = mean(math, na.rm = TRUE)) |>  
  left_join(countrycode, by = "country") |> 
  dplyr::select(country_name, year, avg_math) |> 
  ungroup() |> 
  dplyr::mutate(
    label_x_pos = ifelse(year == 2012, 2012 - 2, 2018 + 1),
    label = ifelse(
      year == 2012,
      paste0(country_name, ", ", round(avg_math)),
      round(avg_math)))
  
plot_data |> 
  ggplot(aes(x = year, 
             y = avg_math,
             label = label,
             colour = country_name,
             group = country_name)) +
  geom_point() +
  geom_line() +
  geom_vline(xintercept=2012,
             linetype="dashed",
             linewidth=0.1) +
  geom_vline(xintercept=2018,
             linetype="dashed",
             linewidth=0.1) + 
  geom_text(aes(x = label_x_pos),
            position = position_nudge(y = 0)) +
  scale_x_continuous(breaks = c(2012, 2018),
                     limits = c(2008, 2020)) +
  scale_colour_manual(values = c("#1F77B4FF", "#FF7F0EFF", "#2CA02CFF", "#D62728FF", 
                                 "#9467BDFF", "#8C564BFF", "#E377C2FF", "#7F7F7FFF")) +
  labs(x = "",
       y = "Average maths score") +
  theme_classic() +
  theme(axis.ticks.y = element_blank(),
        axis.text.y = element_blank(),
        legend.position = "none")