---
execute:
    echo: false
    warning: false
    fig-width: 10
    fig-height: 10
format: 
  beamer:
    theme: Boadilla
---

```{r}
knitr::opts_chunk$set(echo = FALSE)
library(ggplot2)
library(plotly)
library(ggokabeito)
library(RColorBrewer)
library(patchwork)

library(here)

library(knitr)
library(kableExtra)

library(dplyr)
library(tidyr)
library(stringr)
library(DT)


imp_data <- read.csv(file.path(here(), "data", "03_cah_results.csv"))
colnames(imp_data)[6:ncol(imp_data) - 1] <- c(
    "1AC-OUVERTURE", "1AC-MI",
    "2A-UEchoix-S1-UC1", "2A-UEchoix-S1-UC2", "2A-UEchoix-S2-UC3",
    "2A-UEchoix-S2-UC4",
    "2A-UEchoix-S2-UC5", "2A-UEchoix-S2-UC6",
    "2A-Projet-S2"
)
data <- imp_data %>%
    mutate_if(sapply(imp_data, is.character), as.factor)

effectif_cluster <- table(data[["cluster"]])
```
```{r}

data_details_sequence <- read.csv(file.path(here(), "data", "details-sequence-nettoyes.csv"))

for (code_bloc in colnames(data)[6:ncol(data) - 1]) {
    # code_bloc <- "1AC-OUVERTURE"
    matching_code_cours <- data_details_sequence[which(data_details_sequence[["code_bloc"]] == code_bloc), c("code_cours", "cours")]
    row_id_in_matching <- which(matching_code_cours[["code_cours"]] %in% levels(data[[code_bloc]]))
    levels(data[[code_bloc]]) <- matching_code_cours[row_id_in_matching, "cours"]
}
```

# Présentation des données

```{r}
#| width: 50%
#| tab-cap: Extrait des données traitement et nettoyage ($N = 370$ étudiants) 
example_data <- head(data[, -c(1,6:9)], 3)
kable(example_data, format = "latex", booktabs = TRUE) %>% 
  kable_styling(latex_options="scale_down") %>%
  column_spec(1:ncol(example_data),width = "3cm")
```

:::{.callout-warning appearance="minimal"}
\small
**Problème :** Il y a beaucoup de `NA` (des données manquantes), cela peut-être dûe à une 
mauvaise extraction, à de mauvaises correspondances quand j'ai croisé les 
sources.
:::

```{r}
getPalette <- colorRampPalette(colors = palette_okabe_ito())
plot_prop_cluster <- function(orig_data, eff, ...) {
    data <- orig_data

    colorCount <- length(unique(data[["uc"]]))
    levels(data$cluster) <- paste0(levels(data$cluster), " (N=", eff, ")")
    p <- ggplot(data, ...) +
        aes(x = "", y = nb, fill = uc, label = nb) +
        geom_bar(position = "fill", stat = "identity") +
        theme_bw() +
        xlab("Cluster") +
        ylab("Proportion dans le cluster") +
        labs(fill = "Choix") +
        theme(axis.title.y = element_text(angle = 90, vjust = .5, hjust = 1), aspect.ratio = 1) +
        theme(legend.position = "bottom", text=element_text(size=20)) +
        guides(fill = guide_legend(ncol = 2, byrow = TRUE)) +
        scale_fill_manual(values = getPalette(colorCount), ) +
        # coord_flip() +
        scale_x_discrete() +
        # coord_polar("y", start=0) +
        facet_wrap(vars(data[["cluster"]]))

    return(p)
}
```

# Extraits de résultats

```{r parcours_domaine}
#| layout-ncol: 2
#| fig-cap: "Résultats pour les parcours et les domaines"
#| fig-subcap: ""
vec_sequences <- c("parcours", "domaine2A")#, "2A-UEchoix-S1-UC1")
ac <- NULL
for (sequence in vec_sequences){
    ac <- as.data.frame(table(data[["cluster"]], data[[sequence]], useNA = "ifany"))
    colnames(ac) <- c("cluster", "uc", "nb")
    ac <- ac %>%
        group_by(cluster) %>%
        mutate(Prop = nb / sum(nb), uc = str_wrap(uc, 32))
    p <- ac %>% plot_prop_cluster(eff = effectif_cluster) + ggtitle(str_wrap(paste("Proportion pour", sequence), 20))
    print(p)
    }
```

---

```{r domaine_uc1}
#| layout-ncol: 2
#| fig-cap: "Résultats pour les domaines et les UC1"
#| fig-subcap: ""
vec_sequences <- c("domaine2A", "2A-UEchoix-S1-UC1")#, "2A-UEchoix-S1-UC1")
ac <- NULL
for (sequence in vec_sequences){
    ac <- as.data.frame(table(data[["cluster"]], data[[sequence]], useNA = "ifany"))
    colnames(ac) <- c("cluster", "uc", "nb")
    ac <- ac %>%
        group_by(cluster) %>%
        mutate(Prop = nb / sum(nb), uc = str_wrap(uc, 32))
    p <- ac %>% plot_prop_cluster(eff = effectif_cluster) + ggtitle(str_wrap(paste("Proportion pour", sequence), 20))
    print(p)
    }
```

#  En bref
##  Disponible dès maintenant

- Accès au détails pour chaque UCs à choix.
- Toutes les données vous seront communiquées afin que vous puissiez vous en servir.
- Nous avons accès à ces données par dominante également[^1].

## A améliorer pour pérenniser

- Avec de **meilleures données** (moins de `NA`, des noms de matières à jour avec Synapses) c'est une analyse très simple et rapide.
- Avec **plus de données** (plusieurs années et promos) possible de dégager des tendances[^longnote].
- Donc facilement automatisable et *peut aider à comprendre les choix des étudiants*.

[^1]: Pour les dominantes avec au moins 20 étudiants.
[^longnote]: Ici l'analyse a été faite uniquement sur la promo diplomée cet avril 2024.