R/input.R

# Función para extraer los datos para las representaciones a partir de los datos en bruto

input <- function(datosAlumnosJSON){

  listDatos <- jsonlite::fromJSON(datosAlumnosJSON, simplifyDataFrame = TRUE)
  # return(listDatos$idExpediente)
  # # save(datosAlumnosFeather, file = "datosTeleco.rda")
  listaFinal <- list()
  # # listDatos <- read_feather(datosAlumnosFeather)
  # # datosAlumno <- listDatos %>% filter(idExpediente == 6805)
  # # return(datosAlumno)
  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[["Numero de Expedientes"]] <- nExp

    nExpPAU <- nEntPAU[!duplicated(nEntPAU),] %>% length()
    datosGenerales[["Numero 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
  }
  listaFinal[["Datos Generales"]] <- listaDatos
  # 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
  }
  listaFinal[["Datos Presentados"]] <- listaDatos
  return(listaFinal)
  #
  # # json_porcentajesPresentados <- jsonlite::toJSON(listaDatos)
  # # save(json_porcentajesPresentados , file = "Data/jsonPorcentajesPresentados.RData")
}
vic-hl/dashboardTFM documentation built on May 6, 2019, 8:32 p.m.