knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE) options(knitr.table.format = "pipe") library(tidyverse) library(kpiESR) library(ggcpesrthemes) rentrée.d <- 2013 rentrée.f <- 2022
Ce document décrit le processus de mise à jour des données kpiESR, et notamment la constitution d'un jeu de données des établissements, et la fusion de cinq jeux de données (enseignants titulaires, enseignants non permanents, personnel BIATSS, étudiants et finances).
Ces jeux sont notés etab
, ens.tit
, ens.np
, bia
, etu
et fin
.
Le jeu de données sur les patrimoines immobilier est ajouté de façon expérimentale : imo
La constitution du jeu de données etab
est effectuées à part.
esr.etab
sur les établissementspid
)esr
ens.tit
, ens.np
, bia
, etu
, fin
et imo
Les données sont agrégées à trois échelles : Ensemble, Groupe et Etablissement, avec trois méthodes de constitution des périmètres d'agrégation :
ens.tit
, ens.np
, bia
, etu
, fin
et imo
etab <- read.csv2("dataESR/fr-cpesrtmp-etablissements.csv") %>% mutate(Groupe = factor(Groupe,levels = unique(Groupe))) pidfix.raw <- read.csv2("dataESR/fr-cpesrtmp-pidfix.csv") pidfix <- pidfix.raw$pid.dst names(pidfix) <- pidfix.raw$pid.src ens <- kpiesr_read.ens(pidfix) bia <- kpiesr_read.bia(pidfix) etu <- kpiesr_read.etu(pidfix) fin <- kpiesr_read.fin(pidfix) imo <- kpiesr_read.imo(pidfix)
bind_rows( ens %>% summarise(data = "ens", Rentrée.min = min(Rentrée), Rentrée.max = max(Rentrée), nb_pid = n_distinct(pid,na.rm = TRUE)), bia %>% summarise(data = "bia", Rentrée.min = min(Rentrée), Rentrée.max = max(Rentrée), nb_pid = n_distinct(pid,na.rm = TRUE)), etu %>% summarise(data = "etu", Rentrée.min = min(Rentrée), Rentrée.max = max(Rentrée), nb_pid = n_distinct(pid,na.rm = TRUE)), fin %>% summarise(data = "fin", Rentrée.min = min(Rentrée), Rentrée.max = max(Rentrée), nb_pid = n_distinct(pid,na.rm = TRUE)), imo %>% summarise(data = "imo", Rentrée.min = min(Rentrée), Rentrée.max = max(Rentrée), nb_pid = n_distinct(pid,na.rm = TRUE)) ) %>% spoiler_table()
esr.src <- ens %>% full_join(etu) %>% full_join(bia) %>% full_join(fin) %>% full_join(imo) %>% full_join(etab %>% select(pid,Etablissement,Groupe, Groupe.détaillé, Comparable)) %>% select(Groupe,pid,Etablissement, Groupe.détaillé, Comparable, Rentrée, everything()) esr.src <- esr.src %>% arrange(Groupe,Groupe.détaillé,Etablissement,Rentrée) esr <- kpiesr_add_ensembles(esr.src) esr <- kpiesr_add_kpis(esr) esr.pnl <- kpiesr_pivot_norm_label(esr, rentrée.d)
cat("\n<details>\n") cat(" <summary>Voir les données</summary>\n\n") df <- esr.pnl %>% filter(Groupe == "Universités et assimilés", Rentrée == rentrée.f) %>% select(-Groupe, -Rentrée, -Groupe.détaillé) %>% filter(!str_detect(kpi,"kpi.....P.")) for(thekpi in unique(df$kpi)) { cat("##### ",thekpi,"\n\n") df2 <- df %>% filter(kpi == thekpi) if(str_detect(thekpi,"kpi.K.")) df2 <- df2 %>% arrange(valeur) else df2 <- df2 %>% arrange(norm) df2 %>% slice_head(n=5) %>% spoiler_table() df2 %>% slice_tail(n=5) %>% spoiler_table() } cat("\n\n</details>\n")
outliers.k <- esr %>% filter(Rentrée == rentrée.f, Groupe!="Groupe") %>% filter(kpi.K.titPper < 0.3 | kpi.K.ensPetu > 20 | kpi.K.biaPper < 0.40 | kpi.K.biaPper > 0.60 | kpi.K.resPetu > 30000 | kpi.K.forPetu > 5000 ) outliers.n <- esr.pnl %>% filter(Rentrée == rentrée.f, Groupe!="Groupe") %>% filter(., kpi == "kpi.ENS.S.titulaires", norm < 0.25) outliers <- bind_rows( outliers.k %>% select(pid, Etablissement), outliers.n %>% select(pid, Etablissement) ) %>% unique() outliers %>% spoiler_table()
etab <- etab %>% mutate(Comparable = replace(Comparable,pid %in% outliers$pid,FALSE)) esr <- esr %>% mutate(Comparable = replace(Comparable,pid %in% outliers$pid,FALSE)) esr.pnl <- esr.pnl %>% mutate(Comparable = replace(Comparable,pid %in% outliers$pid,FALSE))
groupes <- c(unique(as.character(kpiESR::esr.etab$Groupe))) etabs <- list() etabs["Ensemble"] = list("Ensemble" = "Ensemble") for(g in groupes) { etabs[g] <- list(deframe((kpiESR::esr.etab %>% filter(Groupe == g) %>% transmute(Etablissement = as.character(Etablissement), pid = as.character(pid)) %>% add_row(Etablissement = g, pid = g, .before = 1) ))) } groupes <- c("Ensemble", groupes) fulletabs <- c(list( "Ensemble" = etabs ), etabs) kpi_list <- list( "KPI" = set_names(kpiESR::kpiesr_lfc$K$factors,kpiESR::kpiesr_lfc$K$labels), "Etudiants" = set_names(kpiESR::kpiesr_lfc$ETU$factors,kpiESR::kpiesr_lfc$ETU$labels), "Enseignants" = set_names(kpiESR::kpiesr_lfc$ENS$factors,kpiESR::kpiesr_lfc$ENS$labels), "BIATSS" = set_names(kpiESR::kpiesr_lfc$BIA$factors,kpiESR::kpiesr_lfc$BIA$labels), "Finances" = set_names(kpiESR::kpiesr_lfc$FIN$factors,kpiESR::kpiesr_lfc$FIN$labels), "Immobilier" = set_names(kpiESR::kpiesr_lfc$IMO$factors,kpiESR::kpiesr_lfc$IMO$labels) ) kpiesr_shinycfg <- list( "groupes" = groupes, "etabs" = fulletabs, "kpi_list" = kpi_list ) # kpi_infos <- list() # # for(k in kpiESR::kpiesr_lfc) { # for(i in seq(1,length(k$factors))) { # kpi_infos[[k$factors[i]]] <- list( # "label" = k$labels[i], # "desc" = k$desc[i], # "y_label" = k$y_labels, # "color" = k$color[i] # ) # } # } kpiesr_lfc_labels <- set_names( c(kpiESR::kpiesr_lfc$K$labels, kpiESR::kpiesr_lfc$ETU$labels, kpiESR::kpiesr_lfc$ENS$labels, kpiESR::kpiesr_lfc$BIA$labels, kpiESR::kpiesr_lfc$FIN$labels, kpiESR::kpiesr_lfc$IMO$labels), c(kpiESR::kpiesr_lfc$K$factors, kpiESR::kpiesr_lfc$ETU$factors, kpiESR::kpiesr_lfc$ENS$factors, kpiESR::kpiesr_lfc$BIA$factors, kpiESR::kpiesr_lfc$FIN$factors, kpiESR::kpiesr_lfc$IMO$factors) ) kpiesr_lfc_desc <- set_names( c(kpiESR::kpiesr_lfc$K$desc, kpiESR::kpiesr_lfc$ETU$desc, kpiESR::kpiesr_lfc$ENS$desc, kpiESR::kpiesr_lfc$BIA$desc, kpiESR::kpiesr_lfc$FIN$desc), c(kpiESR::kpiesr_lfc$K$factors, kpiESR::kpiesr_lfc$ETU$factors, kpiESR::kpiesr_lfc$ENS$factors, kpiESR::kpiesr_lfc$BIA$factors, kpiESR::kpiesr_lfc$FIN$factors) ) kpiesr_lfc_colors <- set_names( c(kpiESR::kpiesr_lfc$K$colors, kpiESR::kpiesr_lfc$ETU$colors, kpiESR::kpiesr_lfc$ENS$colors, kpiESR::kpiesr_lfc$BIA$colors, kpiESR::kpiesr_lfc$FIN$colors, kpiESR::kpiesr_lfc$IMO$colors), c(kpiESR::kpiesr_lfc$K$factors, kpiESR::kpiesr_lfc$ETU$factors, kpiESR::kpiesr_lfc$ENS$factors, kpiESR::kpiesr_lfc$BIA$factors, kpiESR::kpiesr_lfc$FIN$factors, kpiESR::kpiesr_lfc$IMO$factors) ) kpiesr_lfc_y_labels <- list() for(k in kpiESR::kpiesr_lfc) { for(i in seq(1,length(k$factors))) { kpiesr_lfc_y_labels[[k$factors[i]]] <- k$y_labels } }
esr <- set_encoding_utf8(esr) esr.pnl <- set_encoding_utf8(esr.pnl) esr.etab <- etab esr.stats <- kpiesr_get_stats(esr.pnl) usethis::use_data(esr, esr.pnl, esr.stats, esr.etab, kpiesr_shinycfg, kpiesr_lfc_labels, kpiesr_lfc_desc, kpiesr_lfc_y_labels, kpiesr_lfc_colors, overwrite = TRUE) write.csv2(esr,"data/fr-cpesr-kpiesr.csv",row.names = FALSE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.