Lectura de datos
load("Icfes162.RData")
 
Bibliotecas
library(tidyr)
library(dplyr)
library(ggplot2)
library(ggthemes)
library(DT)
library(pander)
library(plotly)
 
1. ¿Cuántos registros tiene la base de datos correspondientes a prueba en calidad de estudiante e individual?
rta_1 <- icfes %>%
  group_by(ESTU_ESTUDIANTE) %>%
  count()
pander(rta_1)
| ESTUDIANTE | 
567777 | 
| INDIVIDUAL | 
38205 | 
r1 <- ggplot(data = rta_1, aes(x = ESTU_ESTUDIANTE, y = n)) +
        geom_bar(stat = "identity",
                 fill = c("gray15", "gray50"),
                 color = "red") + 
        geom_text(aes(label = n),
                  size = 8,
                  color = c("white", "black"), 
                  position = position_stack(vjust = 0.5)) +
        labs(x = "",
             y = "Número de registros",
             main = "") + 
        theme_classic()
r1

 
2. ¿Qué porcentaje de registros correspondientes a calidad de estudiante e individual tiene la base de datos?
rta_2 <- rta_1 %>%
  ungroup() %>%
  mutate(Total = sum(n),
         porcentaje = n/Total * 100,
         n_miles = n/1000)
pander(rta_2)
| ESTUDIANTE | 
567777 | 
605982 | 
93.7 | 
567.8 | 
| INDIVIDUAL | 
38205 | 
605982 | 
6.305 | 
38.2 | 
r2 <- ggplot(data = rta_2, aes(x = ESTU_ESTUDIANTE, y = porcentaje)) +
        geom_bar(stat = "identity", 
                 fill = c("gray15", "gray50"),
                 color = "red") + 
        geom_text(aes(label = round(porcentaje, digits = 1)),
                  size = 8,
                  color = c("white", "black"), 
                  position = position_stack(vjust = 0.5)) +
        labs(x = "",
             y = "Porcentaje de registros",
             main = "") + 
        theme_classic()
r2

 
3. ¿Cómo se distribuye la edad de las personas que presentaron la prueba?
r3 <- ggplot(data = icfes, aes(x = ESTU_EDAD)) + 
        geom_histogram(bins = 100,
                       fill = "gray15",
                       color = "red") +
        labs(x = "Edad",
             y = "Frecuencia") + 
        theme_classic()
r3

 
4. ¿Qué porcentaje de personas que presentaron la prueba son mayores de edad?
rta_4 <- icfes %>%
  filter(ESTU_EDAD >= 18) %>%
  count() %>%
  mutate(Total = 605982,
         porcentaje = n/Total * 100)
pander(rta_4)
 
5. ¿Cuántas mujeres (como frecuencia absoluta y relativa) mayores de edad y con calidad de estudiante presentaron la prueba?
rta_5 <- icfes %>%
  filter(ESTU_GENERO == "F" & ESTU_EDAD >= 18) %>%
  group_by(ESTU_ESTUDIANTE) %>%
  count() %>%
  ungroup() %>%
  mutate(Total_Mujeres = sum(n),
         Gran_Total = 605982,
         Porcentaje_mujeres = n/Gran_Total * 100,
         Total_Porcentaje = sum(Porcentaje_mujeres))
datatable(rta_5)
r5 <- ggplot(data = rta_5, aes(x = ESTU_ESTUDIANTE, y = Porcentaje_mujeres)) +
        geom_bar(stat = "identity",
                 fill = c("gray15", "gray50"),
                 color = "red") + 
        geom_text(aes(label = round(Porcentaje_mujeres, digits = 1)),
                  size = 8,
                  color = c("white", "black"), 
                  position = position_stack(vjust = 0.5)) +
        labs(x = "Mujer",
             y = "Porcentaje de registros",
             main = "") + 
        theme_classic()
r5

 
6. ¿Qué porcentaje de estudiantes tienen una sola discapacidad (cualquiera)?
Motriz <- icfes %>%
  filter(ESTU_ESTUDIANTE == "ESTUDIANTE") %>%
  select(ESTU_LIMITA_AUTISMO, ESTU_LIMITA_CONDICIONESPECIAL, ESTU_LIMITA_MOTRIZ,
         ESTU_LIMITA_INVIDENTE, ESTU_LIMITA_SDOWN, ESTU_LIMITA_SORDO) %>%
  count(ESTU_LIMITA_MOTRIZ == "MOT" & ESTU_LIMITA_AUTISMO == "" &
          ESTU_LIMITA_CONDICIONESPECIAL == "" & ESTU_LIMITA_INVIDENTE == "" & 
          ESTU_LIMITA_SDOWN == "" & ESTU_LIMITA_SORDO == "") 
Invidente <- icfes %>%
  filter(ESTU_ESTUDIANTE == "ESTUDIANTE") %>%
  select(ESTU_LIMITA_AUTISMO, ESTU_LIMITA_CONDICIONESPECIAL, ESTU_LIMITA_MOTRIZ,
         ESTU_LIMITA_INVIDENTE, ESTU_LIMITA_SDOWN, ESTU_LIMITA_SORDO) %>%
  count(ESTU_LIMITA_MOTRIZ == "" & ESTU_LIMITA_AUTISMO == "" & 
          ESTU_LIMITA_CONDICIONESPECIAL == "" & ESTU_LIMITA_INVIDENTE == "VIS" & 
          ESTU_LIMITA_SDOWN == "" & ESTU_LIMITA_SORDO == "") 
Especial <- icfes %>%
  filter(ESTU_ESTUDIANTE == "ESTUDIANTE") %>%
  select(ESTU_LIMITA_AUTISMO, ESTU_LIMITA_CONDICIONESPECIAL, ESTU_LIMITA_MOTRIZ,
         ESTU_LIMITA_INVIDENTE, ESTU_LIMITA_SDOWN, ESTU_LIMITA_SORDO) %>%
  count(ESTU_LIMITA_MOTRIZ == "" & ESTU_LIMITA_AUTISMO == "" & 
          ESTU_LIMITA_CONDICIONESPECIAL == "CE" & ESTU_LIMITA_INVIDENTE == "" & 
          ESTU_LIMITA_SDOWN == "" & ESTU_LIMITA_SORDO == "")
Sordo <- icfes %>%
  filter(ESTU_ESTUDIANTE == "ESTUDIANTE") %>%
  select(ESTU_LIMITA_AUTISMO, ESTU_LIMITA_CONDICIONESPECIAL, ESTU_LIMITA_MOTRIZ,
         ESTU_LIMITA_INVIDENTE, ESTU_LIMITA_SDOWN, ESTU_LIMITA_SORDO) %>%
  count(ESTU_LIMITA_MOTRIZ == "" & ESTU_LIMITA_AUTISMO == "" & 
          ESTU_LIMITA_CONDICIONESPECIAL == "" & ESTU_LIMITA_INVIDENTE == "" & 
          ESTU_LIMITA_SDOWN == "" & ESTU_LIMITA_SORDO == "AUD")
SDown <- icfes %>%
  filter(ESTU_ESTUDIANTE == "ESTUDIANTE") %>%
  select(ESTU_LIMITA_AUTISMO, ESTU_LIMITA_CONDICIONESPECIAL, ESTU_LIMITA_MOTRIZ,
         ESTU_LIMITA_INVIDENTE, ESTU_LIMITA_SDOWN, ESTU_LIMITA_SORDO) %>%
  count(ESTU_LIMITA_MOTRIZ == "" & ESTU_LIMITA_AUTISMO == "" & 
        ESTU_LIMITA_CONDICIONESPECIAL == "" & 
        ESTU_LIMITA_INVIDENTE == "" & ESTU_LIMITA_SDOWN == "SD" & 
          ESTU_LIMITA_SORDO == "")
Autismo <- icfes %>%
  filter(ESTU_ESTUDIANTE == "ESTUDIANTE") %>%
  select(ESTU_LIMITA_AUTISMO, ESTU_LIMITA_CONDICIONESPECIAL, ESTU_LIMITA_MOTRIZ,
         ESTU_LIMITA_INVIDENTE, ESTU_LIMITA_SDOWN, ESTU_LIMITA_SORDO) %>%
  count(ESTU_LIMITA_MOTRIZ == "" & ESTU_LIMITA_AUTISMO == "AA" &
        ESTU_LIMITA_CONDICIONESPECIAL == "" & ESTU_LIMITA_INVIDENTE == "" & 
        ESTU_LIMITA_SDOWN == "" & ESTU_LIMITA_SORDO == "")
#Totales por discapacidad
discapacidad <- data.frame(Discapacidad = c(Motriz$n[2], Invidente$n[2], Especial$n[2],
                                            Sordo$n[2], SDown$n[2], Autismo$n[2]),
                           Tipo_Discapacidad = c("Motriz", "Invidente", "Especial",
                                                "Sordo", "SDown", "Autismo")) %>%
  mutate(Total = sum(Discapacidad))
pander(discapacidad)
| 478 | 
Motriz | 
1016 | 
| 154 | 
Invidente | 
1016 | 
| 10 | 
Especial | 
1016 | 
| 115 | 
Sordo | 
1016 | 
| 73 | 
SDown | 
1016 | 
| 186 | 
Autismo | 
1016 | 
r6 <- ggplot(data = discapacidad, aes(x = Tipo_Discapacidad, y = Discapacidad)) + 
  geom_bar(stat = "identity", fill = "gray15", color = "red") + 
  labs(x = "Tipo de discapacidad",
       y = "Número de registros") + 
  geom_text(aes(label = Discapacidad),
            position = position_dodge(1),
            vjust = -0.3,
            size = 6.5) + 
  theme_classic()
r6  

 
12. ¿Cuál de los departamentos de residencia posee mayor número de registros o pruebas en el año 2016-02?
rta_12 <- icfes %>%
  filter(ESTU_RESIDE_DEPTO != "" & ESTU_RESIDE_DEPTO != "EXTRANJERO") %>%
  group_by(ESTU_RESIDE_DEPTO) %>%
  count() %>%
  ungroup() %>%
  mutate(Total = sum(n),
         Porcentaje = n/Total * 100) %>%
  arrange(desc(n))
datatable(rta_12)
r12 <- ggplot(data = rta_12, aes(x = ESTU_RESIDE_DEPTO, y = n)) +
  geom_bar(stat = "identity", fill = "gray15", color = "red") + 
  labs(x = "Departamento de residencia",
       y = "Número de registros") +
  geom_text(aes(label = round(Porcentaje, digits = 1)),
            position = position_dodge(1),
            vjust = -0.3,
            size = 3.5) + 
  theme_classic() +
  theme(axis.text.x = element_text(angle = 90))
r12

 
20. Teniendo en cuenta que los registros corresponden al segundo semestre del año 2016 (2016-02), ¿cuántas personas terminaron el bachillerato hace más de 3 años?
rta_20 <- icfes %>%
  filter(ESTU_ANO_TERMINO_BACHILL < 2013 & ESTU_MES_TERMINO_BACHILL < 6) %>%
  count() %>%
  mutate(Total = 605982,
         Porcentaje = n/Total * 100)
pander(rta_20)
 
23. ¿Pagan pensiones más costosas hombres o mujeres?
rta_23 <- icfes %>%
  mutate(COLE_VALOR_PENSION = factor(COLE_VALOR_PENSION)) %>%
  filter(COLE_VALOR_PENSION != "" & ESTU_GENERO != "") %>%
  group_by(COLE_VALOR_PENSION, ESTU_GENERO) %>%
  count()
rta_23Por <- rta_23 %>%
  ungroup() %>%
  group_by(COLE_VALOR_PENSION) %>%
  mutate(Total = sum(n),
         Porcentaje = n/Total * 100)
pander(rta_23Por)
| 1 | 
F | 
244459 | 
438317 | 
55.77 | 
| 1 | 
M | 
193858 | 
438317 | 
44.23 | 
| 2 | 
F | 
21349 | 
42785 | 
49.9 | 
| 2 | 
M | 
21436 | 
42785 | 
50.1 | 
| 3 | 
F | 
8486 | 
18218 | 
46.58 | 
| 3 | 
M | 
9732 | 
18218 | 
53.42 | 
| 4 | 
F | 
6461 | 
12771 | 
50.59 | 
| 4 | 
M | 
6310 | 
12771 | 
49.41 | 
| 5 | 
F | 
13583 | 
25477 | 
53.31 | 
| 5 | 
M | 
11894 | 
25477 | 
46.69 | 
| 6 | 
F | 
13997 | 
27473 | 
50.95 | 
| 6 | 
M | 
13476 | 
27473 | 
49.05 | 
r23 <- ggplot(data = rta_23Por,
              aes(x = COLE_VALOR_PENSION, y = Porcentaje, fill = ESTU_GENERO)) + 
  geom_bar(stat = "identity", color = "red") + 
  scale_fill_manual(values = c("gray10", "gray40")) + 
  scale_color_manual(values = "red") +
  geom_text(aes(label = round(Porcentaje, digits = 1)),
            size = 8,
            position = position_stack(vjust = 0.5),
            col = "white") +
  labs(x = "Valor de la pensión",
       y = "Porcentaje de registros",
       fill = "Género") + 
  theme_classic()
r23

 
27. ¿Cuáles son los cinco departamentos con mayor número de estudiantes que laboran?
rta_27 <- icfes %>%
  mutate(ESTU_TRABAJA = factor(ESTU_TRABAJA)) %>%
  filter(ESTU_ESTUDIANTE == "ESTUDIANTE" & ESTU_TRABAJA != "" & ESTU_TRABAJA != "1") %>%
  group_by(ESTU_RESIDE_DEPTO, ESTU_TRABAJA) %>%
  count()
rta_27Por <- rta_27 %>%
  ungroup() %>%
  group_by(ESTU_RESIDE_DEPTO) %>%
  mutate(Total = sum(n),
         Porcentaje = n/Total * 100) %>%
  arrange(desc(Porcentaje))
datatable(rta_27Por)
r27 <- ggplot(data = rta_27Por,
              aes(x = ESTU_RESIDE_DEPTO, y = Porcentaje, fill = ESTU_TRABAJA)) + 
  geom_bar(stat = "identity", color = "red") + 
  scale_fill_manual(values = c("gray10", "gray40")) + 
  scale_color_manual(values = "red") +
  labs(x = "Departamento de residencia",
       y = "Porcentaje de registros",
       fill = "¿Trabaja?") + 
  theme_classic() +
   theme(axis.text.x = element_text(angle = 90))
r27
