library(tidyverse) library(shiny) library(DT) library(RSQLite) library(stringr) library(plotly) library(forcats) library(markdown) uniq <- function(df, ..., first = F) { uniq_vector <- function(x, fst) { x %>% c %>% rle %>% .$lengths -> l if (fst) { l %>% cumsum %>% `-`(l) + 1 } else { l %>% cumsum } } eval(substitute(alist(...))) %>% map_chr(as.character) %>% intersect(names(df)) %>% map(~uniq_vector(df[[.x]], first)) %>% reduce(union) %>% sort -> columns df[columns,] } Sys.setlocale("LC_TIME", "fr_FR.UTF-8") dbConnect(SQLite(), "ecn.db") -> db # Index villes et spés ---- db %>% tbl("trajectoires") %>% select(Discipline, Subdivision) %>% distinct %>% collect -> villespe villespe %>% select(Subdivision) %>% distinct %>% filter(Subdivision != "") %>% arrange(Subdivision) %>% pull(Subdivision) -> villes villespe %>% select(Discipline) %>% distinct %>% filter(!Discipline %>% str_detect("(car aucun vœu)|(malgré.*)|(pas de.*)")) %>% arrange(Discipline) %>% pull(Discipline) -> spes # Max rank ---- db %>% tbl("trajectoires") %>% select(Etudiant) %>% distinct %>% collect %>% pull(Etudiant) %>% max -> max_rank db %>% dbDisconnect