R/input.R

Defines functions procesar_datos

# library(shiny)
# library("dplyr")
# library("feather")
# library("ggplot2")
# library("scales")
# library("knitr")
# library("kableExtra")
# library("jsonlite")
# Generamos el json que contiene los datos en bruto
# datosAlumnos <- read_feather("Data/pau_ass_grados.feather")
# datosAlumnosJSON <- toJSON(datosAlumnos, dataframe = "columns")
# 
# procesar_datos(datosAlumnosJSON)

#' @export
procesar_datos <- function(datosAlumnosJSON){
  listDatos <- jsonlite::fromJSON(datosAlumnosJSON, simplifyDataFrame = TRUE)
  dfDatos <- as.data.frame(listDatos)
  
  titulos <- dfDatos$PLAN_ID %>% factor() %>% levels()
  
  # Cálculo de datos generales
  listaDatos <- list()
  i = 1
  for(titulo in titulos){
    datosTabla <- dfDatos %>% filter(PLAN_ID == titulo)
    datosGenerales <- list()
    datosGenerales[["Entradas totales"]] <- nrow(datosTabla)
    
    nEntPAU <- datosTabla %>% filter(ALU_ASS_CURSO_ID == "PAU") %>% select(idExpediente)
    datosGenerales[["Entradas PAU"]] <- nrow(nEntPAU)
    
    nExp <- datosTabla %>% select(idExpediente)
    nExp <- nExp[!duplicated(nExp),] %>% length()
    datosGenerales[["Número de Expedientes"]] <- nExp
    
    nExpPAU <- nEntPAU[!duplicated(nEntPAU),] %>% length()
    datosGenerales[["Número de Expedientes PAU"]] <- nExpPAU
    
    anios <- datosTabla$ANYACA_MAT_ID %>% factor() %>% levels()
    datosGenerales[["Intervalo de cursos comprendidos"]] <- c(paste(min(anios), max(anios), sep="/"))
    
    
    listaDatos[[titulo]] <- datosGenerales
  }
  json_datosGenerales <- jsonlite::toJSON(listaDatos)
  save(json_datosGenerales , file = "Data/jsonDatosGenerales.RData")
  
  # Cálculo de presentados por curso
  listaDatos <- list()
  for(titulo in titulos){
    listaPorcentajes <- list()
    for(curso in c("1", "2", "3", "4")){
      datosGrafica <- dfDatos %>% filter(PLAN_ID == titulo)
      temp2 <- datosGrafica %>% filter(descValor == "CALIFICACION_DESC" & ALU_ASS_CURSO_ID == curso) %>%
        select(idExpediente, ASS_ASS_DESC, valor) %>% na.omit()
      
      temp2 <- temp2 %>% mutate(PRESENTADO = ifelse(temp2$valor != "NO PRESENTADO", "PRESENTADO", "NO PRESENTADO"))
      
      temp2 <- temp2[!duplicated(temp2), ]
      
      tabla <- as.data.frame(table(temp2 %>% select(ASS_ASS_DESC, PRESENTADO)))
      porcentajes <- data.frame("ASS_ASS_DESC" = character(), "PRESENTADO" = character(), "Freq" = numeric(), stringsAsFactors = FALSE)
      for(asig in temp2$ASS_ASS_DESC %>% factor() %>% levels()){
        # t <- tabla %>% filter(ASS_ASS_DESC == asig) %>% select(Freq) %>% sum()
        # porcentajes[porcentajes$ASS_ASS_DESC==asig, "Freq"] <- tabla[tabla$ASS_ASS_DESC==asig, "Freq"]/t
        t <- tabla %>% filter(ASS_ASS_DESC == asig) %>% select(Freq) %>% sum()
        if(length(as.numeric(tabla[tabla$ASS_ASS_DESC == asig & tabla$PRESENTADO == "PRESENTADO", "Freq"]/t)) != 0){
          porcentajes[length(porcentajes$ASS_ASS_DESC)+1, ] <- c(asig, "PRESENTADO", as.numeric(tabla[tabla$ASS_ASS_DESC == asig & tabla$PRESENTADO == "PRESENTADO", "Freq"]/t))
        }
        else{
          porcentajes[length(porcentajes$ASS_ASS_DESC)+1, ] <- c(asig, "PRESENTADO", 0)
        }
        if(length(as.numeric(tabla[tabla$ASS_ASS_DESC == asig & tabla$PRESENTADO == "NO PRESENTADO", "Freq"]/t)) != 0){
          porcentajes[length(porcentajes$ASS_ASS_DESC)+1, ] <- c(asig, "NO PRESENTADO", as.numeric(tabla[tabla$ASS_ASS_DESC == asig & tabla$PRESENTADO == "NO PRESENTADO", "Freq"]/t))
        }
        else{
          porcentajes[length(porcentajes$ASS_ASS_DESC)+1, ] <- c(asig, "NO PRESENTADO", 0)
        }
      }
      listaPorcentajes[[curso]] <- porcentajes
    }
    listaDatos[[titulo]] <- listaPorcentajes
  }
  json_porcentajesPresentados <- jsonlite::toJSON(listaDatos)
  save(json_porcentajesPresentados , file = "Data/jsonPorcentajesPresentados.RData")
}
vic-hl/paqueteTFM documentation built on May 6, 2019, 8:32 p.m.