Graduação
Cálculo do Aluno de Graduação Equivalente a partir dos dados fornecidos pela SUTIC. Na tabela abaixo, é possível filtrar o total de alunos equivalente de acordo com o curso, o sexo e a área do Impact Ranking do Times Higher Education (THE).
Fórmula para cálculo do Aluno de Graduação em Tempo Integral:
\[AG_{TI} = \sum_{\text{todos os cursos}}\{(N_{DI}*D_{PC})(1+[\text{Fator de retenção}]) + ((N_{I}-N_{DI})/4)*D_{PC})\}\]
Fórmula para cálculo do Aluno de Graduação Equivalente:
\[A_gE = AG_{TI} * [\text{Peso do grupo em que se insere o curso}]\]
# Calculando aluno equivalente TCU a partir de dados
# brutos
library(openxlsx)
library(readxl)
library(readr)
library(dplyr)
library(imputeTS)
library(tidyverse)
library(DT)
library(htmlwidgets)
library(htmltools)
# Abrir os dados ----------------------------------------------------------
# numero de discentes
discentes_20202 <-
read_csv("G:/Drives compartilhados/ESTATISTICA/THE_IMPACT_2022/Discentes da Graduacao 20202.csv",
locale = locale(encoding = "WINDOWS-1252"))
# numero de diplomados NDI
NDI <- read_csv("G:/Drives compartilhados/ESTATISTICA/THE_IMPACT_2022/Alunos que colaram grau em cursos de graduação nos semestres 2020.csv",
locale = locale(encoding = "WINDOWS-1252"))
# tabela DPC e fatores de retencao
DPC_fator_ret <- read_excel("DPC_fator_ret.xlsx")
# Areas THE
areas_cursos <- read_excel("dados alunos para WUR 2016.xlsx",
sheet = "area_turno", col_types = c("text", "skip", "text"))
areas_cursos %>% DT::datatable(options=list(initComplete = JS(
"function(settings, json) {",
"$(this.api().table().header()).css({'font-size': '50%'});",
"$(this.api().table().footer()).css({'font-size': '50%'});",
"}"),
scrollY=300, pageLength = nrow(areas_cursos), scrollX=TRUE,
scroller=TRUE),
rownames=FALSE, filter = "top") %>%
DT::formatStyle(columns = 0:12, fontSize = '50%')# Totais de alunos por curso ----------------------------------------------
# numero total de discentes
discentes_20202 %>% group_by(curso, campus, sexo) %>%
summarise(total = n()) -> total_geral
total_geral %>% DT::datatable(options=list(initComplete = JS(
"function(settings, json) {",
"$(this.api().table().header()).css({'font-size': '50%'});",
"$(this.api().table().footer()).css({'font-size': '50%'});",
"}"),
scrollY=300, pageLength = nrow(total_geral), scrollX=TRUE,
scroller=TRUE),
rownames=FALSE, filter = "top") %>%
DT::formatStyle(columns = 0:12, fontSize = '50%')# numero total de diplomados
NDI %>% group_by(curso, campus, sexo) %>%
summarise(NDI = n()) -> total_NDI
total_NDI %>% DT::datatable(options=list(initComplete = JS(
"function(settings, json) {",
"$(this.api().table().header()).css({'font-size': '50%'});",
"$(this.api().table().footer()).css({'font-size': '50%'});",
"}"),
scrollY=300, pageLength = nrow(total_NDI), scrollX=TRUE,
scroller=TRUE),
rownames=FALSE, filter = "top") %>%
DT::formatStyle(columns = 0:12, fontSize = '50%')# numero total de ingressantes
discentes_20202 %>% filter(ano_ingresso == 2020) %>%
group_by(curso, campus, sexo) %>% summarise(NI = n()) -> total_NI
total_NI %>% DT::datatable(options=list(initComplete = JS(
"function(settings, json) {",
"$(this.api().table().header()).css({'font-size': '50%'});",
"$(this.api().table().footer()).css({'font-size': '50%'});",
"}"),
scrollY=300, pageLength = nrow(total_NI), scrollX=TRUE,
scroller=TRUE),
rownames=FALSE, filter = "top") %>%
DT::formatStyle(columns = 0:12, fontSize = '50%')# Merge para tabela AGTI --------------------------------------------------
total_geral %>%
full_join(total_NDI, by=c(curso = "curso", campus = "campus", sexo="sexo")) %>%
full_join(total_NI, by=c(curso = "curso", campus = "campus", sexo="sexo")) %>%
full_join(DPC_fator_ret, by=c(curso = "curso", campus = "campus")) %>%
full_join(areas_cursos, by="curso") %>%
mutate_if(is.numeric, ~replace_na(., 0)) %>%
mutate(AGTI = (NDI*dpc)*(1+fator_ret) + ((NI-NDI)/4)*dpc) %>%
mutate(AGE = AGTI*peso) -> tabela
#------
sketch <- htmltools::withTags(table(
tableHeader(colnames(tabela)),
tableFooter(rep("",ncol(tabela)))
))
jsCode <- "function(row, data, start, end, display) {
var api = this.api(), data;
total = api.column(10, {page: 'current'}).data().reduce( function(a, b) { return a +
b}, 0);
total2 = api.column(11, {page: 'current'}).data().reduce( function(a, b) { return a
+ b}, 0);
$( api.column(10).footer() ).html('Total: ' + total.toFixed(2));
$( api.column(11).footer() ).html('Total: ' + total2.toFixed(2))
}"
DT::datatable(tabela, container = sketch,
options=list(initComplete = JS(
"function(settings, json) {",
"$(this.api().table().header()).css({'font-size': '50%'});",
"$(this.api().table().footer()).css({'font-size': '50%'});",
"}"),
scrollY=300, pageLength = nrow(tabela), scrollX=TRUE,
scroller=TRUE, dom = 't',
footerCallback = JS(jsCode),
columnDefs = list(list(targets = c(1,3,4,5,6,7,8,10,11),
searchable = FALSE))), rownames=FALSE,
filter = "top") %>%
DT::formatStyle(columns = 0:12, fontSize = '50%')