0. Cargar librerias y base de datos

library(readxl)
library(dplyr)
library(gdata)
library(tidyr)

Grad <- read_excel("graduados_2018_2021.xlsx", 
    sheet = "Sheet1")
filas <- nrow(Grad)
columnas <- ncol(Grad)
nombres <- names(Grad)
head(Grad)[,3:7]
## # A tibble: 6 × 5
##   `INSTITUCIÓN DE EDUCACIÓN SUPERIOR (IES)` PRINCIPAL …¹ ID SE…² SECTO…³ ID CA…⁴
##   <chr>                                     <chr>          <dbl> <chr>     <dbl>
## 1 UNIVERSIDAD NACIONAL DE COLOMBIA          Principal          1 OFICIAL       4
## 2 UNIVERSIDAD NACIONAL DE COLOMBIA          Principal          1 OFICIAL       4
## 3 UNIVERSIDAD NACIONAL DE COLOMBIA          Principal          1 OFICIAL       4
## 4 UNIVERSIDAD NACIONAL DE COLOMBIA          Principal          1 OFICIAL       4
## 5 UNIVERSIDAD NACIONAL DE COLOMBIA          Principal          1 OFICIAL       4
## 6 UNIVERSIDAD NACIONAL DE COLOMBIA          Principal          1 OFICIAL       4
## # … with abbreviated variable names ¹​`PRINCIPAL O SECCIONAL`, ²​`ID SECTOR IES`,
## #   ³​`SECTOR IES`, ⁴​`ID CARACTER`

La base de datos corresponde a informacion de egresados de universidades en Colombia en el periodo 2018 a 2021. Se compone de 169970 filas y 33 columnas que contienen la siguiente informacion: CÓDIGO DE LA INSTITUCIÓN, IES_PADRE, INSTITUCIÓN DE EDUCACIÓN SUPERIOR (IES), PRINCIPAL O SECCIONAL, ID SECTOR IES, SECTOR IES, ID CARACTER, CARACTER IES, CÓDIGO DEL DEPARTAMENTO (IES), DEPARTAMENTO DE DOMICILIO DE LA IES, CÓDIGO DEL MUNICIPIO, MUNICIPIO DE DOMICILIO DE LA IES, CÓDIGO SNIES DEL PROGRAMA, PROGRAMA ACADÉMICO, ID NIVEL ACADÉMICO, NIVEL ACADEMICO, ID NIVEL DE FORMACIÓN, NIVEL DE FORMACIÓN, ID METODOLOGÍA, METODOLOGÍA, ID ÁREA, ÁREA DE CONOCIMIENTO, ID NÚCLEO, NÚCLEO BÁSICO DEL CONOCIMIENTO (NBC), CÓDIGO DEL DEPARTAMENTO (PROGRAMA), DEPARTAMENTO DE OFERTA DEL PROGRAMA, CÓDIGO DEL MUNICIPIO (PROGRAMA), MUNICIPIO DE OFERTA DEL PROGRAMA, ID SEXO, SEXO, AÑO, SEMESTRE, GRADUADOS

1. Cual es el total de graduados en el país de 2018-2021 diferenciando pregrado y posgrado ¿de estos cuantos son mujeres y cuantos so hombres?

Grad.tipo <- Grad %>% # Base de datos original
  filter(., AÑO>=2018 & AÑO<=2021) %>% # Filtro por los a;os de interes
  mutate_if(., is.character, toupper) %>% # Convertimos el DF a mayuscula
  group_by(., `NIVEL ACADEMICO`, SEXO) %>% # Agrupo por los factores de interes
  summarise(., SUMA_GRADUADOS=sum(GRADUADOS)) %>% # Sumo los graduados y renombro la variable
  mutate(., PORCENTAJE=round((SUMA_GRADUADOS/sum(Grad$GRADUADOS))*100, digits = 2) ) %>% # calculamos %
  ungroup()
Grad.tipo
## # A tibble: 4 × 4
##   `NIVEL ACADEMICO` SEXO   SUMA_GRADUADOS PORCENTAJE
##   <chr>             <chr>           <dbl>      <dbl>
## 1 POSGRADO          HOMBRE         191759       9.76
## 2 POSGRADO          MUJER          246831      12.6 
## 3 PREGRADO          HOMBRE         668982      34.1 
## 4 PREGRADO          MUJER          856794      43.6

Se observa que los egresados en pregrado son mas del triple (77.68%) que los de posgrados (22.33%). Asi mismo, que tanto en pregrado (Hombres: 34.06%, Mujeres:43.62%) como en posgrado (Hombres: 9.76%, Mujeres:12.57%) la mayoria de egresados son mujeres.

2. Cree un DataFrame llamada nuevo_garduados que contenga sólo las columnas AÑO, PROGRAMA ACADÉMICO, SEXO, SEMESTRE, GRADUADOS en ese orden. Imprima el encabezado.

nuevo_garduados <- Grad %>% 
  select(., AÑO, `NIVEL ACADEMICO`, SEXO, SEMESTRE, GRADUADOS) # Seleccionamos las columnas
head(nuevo_garduados)# Mostramos en elcabezado del nuevo dataframe
## # A tibble: 6 × 5
##     AÑO `NIVEL ACADEMICO` SEXO   SEMESTRE GRADUADOS
##   <dbl> <chr>             <chr>     <dbl>     <dbl>
## 1  2018 PREGRADO          Hombre        1        16
## 2  2018 PREGRADO          Hombre        2        35
## 3  2018 PREGRADO          Mujer         1        17
## 4  2018 PREGRADO          Mujer         2        12
## 5  2018 PREGRADO          Hombre        1         8
## 6  2018 PREGRADO          Hombre        2        20

3. Para el área del conocimiento de Ciencias de la Salud indique el número de tecnicos, tecnologos y universitarios se han graduado por año

Grad %>% 
  mutate(., `ÁREA DE CONOCIMIENTO`=toupper(`ÁREA DE CONOCIMIENTO`),
                `NIVEL DE FORMACIÓN`=toupper(`NIVEL DE FORMACIÓN`)) %>% # Convierto columnas a mayuscula 
  filter(., `ÁREA DE CONOCIMIENTO`=="CIENCIAS DE LA SALUD") %>% # Filtro
  group_by(., AÑO, `ID NIVEL DE FORMACIÓN`) %>%  # Agrupo por a;o y nivel de formacion
  summarise(., SUMA_GRADUADOS=sum(GRADUADOS)) %>% # Sumo los graduados
  filter(., `ID NIVEL DE FORMACIÓN` %in%  c(6,5,4)) %>% # Selecciono los niveles educativos de interes
  ungroup() %>% mutate(., NIVEL_FORMACION= case_when(
    `ID NIVEL DE FORMACIÓN`==6 ~ "UNIVERSITARIO",
    `ID NIVEL DE FORMACIÓN`==5 ~ "TECNOLOGO",
    `ID NIVEL DE FORMACIÓN`==4 ~ "TECNICO") ) %>% # Reemplazo valores mal tabulados del DF
  select(., AÑO, NIVEL_FORMACION, SUMA_GRADUADOS) # selecciono las variables de interes
## # A tibble: 12 × 3
##      AÑO NIVEL_FORMACION SUMA_GRADUADOS
##    <dbl> <chr>                    <dbl>
##  1  2018 TECNICO                    933
##  2  2018 TECNOLOGO                 5075
##  3  2018 UNIVERSITARIO            18895
##  4  2019 TECNICO                    729
##  5  2019 TECNOLOGO                 5473
##  6  2019 UNIVERSITARIO            18425
##  7  2020 TECNICO                    505
##  8  2020 TECNOLOGO                 3788
##  9  2020 UNIVERSITARIO            18289
## 10  2021 TECNICO                    544
## 11  2021 TECNOLOGO                 3883
## 12  2021 UNIVERSITARIO            20149

4. ¿Cuantos Estudiantes estudiantes se han graduado desde el año 2018 de la Especialización en estadística aplicada de la fundacion universitaria los libertadores?

Grad1 <- Grad %>% 
  mutate(., 
         IES=chartr("ÁÉÍÓÚ", "AEIOU", toupper(`INSTITUCIÓN DE EDUCACIÓN SUPERIOR (IES)`)),
         PA=chartr("ÁÉÍÓÚ", "AEIOU", toupper(`PROGRAMA ACADÉMICO`)) ) %>% # preparo el DF
  filter(., IES=="FUNDACION UNIVERSITARIA LOS LIBERTADORES" & 
           PA=="ESPECIALIZACION EN ESTADISTICA APLICADA") # Filtro por universidad y programa
eea <- sum(Grad1$GRADUADOS) # Calculo la suma de graduados

En el periodo de 2018 a 2021, se han graduado de la Fundacion universitaria los libertadores, un total de 316 especialistas en estadistica aplicada en las modalidades virtual y presencial

5. De acuerdo con la base de datos de cuantos programas de medicina en Bogotá hubo graduados Además elabore una tabla que indique los graduados semestre a semestre desde 2018 de estos programas

library(tidyselect)
uni.medicina <- Grad %>% 
  filter(., `CÓDIGO DEL MUNICIPIO`==11001 & `PROGRAMA ACADÉMICO`=="MEDICINA") %>% # Filtro por ciudad
  select(., IES=`INSTITUCIÓN DE EDUCACIÓN SUPERIOR (IES)`, IES_PADRE) %>% # Elijo variables de interes
  mutate(., IES=
           ifelse(grepl("ANTONIO",IES)==TRUE, "UNIVERSIDAD ANTONIO NARIÑO", IES) ) %>%
  mutate(., IES=
           ifelse(grepl("CORPAS",IES)==TRUE, "FUNDACION UNIVERSITARIA JUAN N CORPAS", IES) ) %>%
  mutate(., IES=
           ifelse(grepl("UDCA",IES)==TRUE, "UNIVERSIDAD DE CIENCIAS APLICADAS Y AMBIENTALES", IES) ) %>%
  distinct(., IES) # Identifico los valores unicos del dataframe
n.u.med <- nrow(uni.medicina);n.u.med # Sumo las filas para determinar el numero de universidades
## [1] 13

En Bogotá un total de 13 universidades dictan la carrera de medicina en pregrado, las cuales son: UNIVERSIDAD NACIONAL DE COLOMBIA, UNIVERSIDAD MILITAR-NUEVA GRANADA, PONTIFICIA UNIVERSIDAD JAVERIANA, COLEGIO MAYOR DE NUESTRA SEÑORA DEL ROSARIO, UNIVERSIDAD EL BOSQUE, UNIVERSIDAD DE LOS ANDES, UNIVERSIDAD COOPERATIVA DE COLOMBIA, UNIVERSIDAD ANTONIO NARIÑO, UNIVERSIDAD DE CIENCIAS APLICADAS Y AMBIENTALES, FUNDACION UNIVERSITARIA DE CIENCIAS DE LA SALUD, FUNDACION UNIVERSITARIA JUAN N CORPAS, FUNDACION UNIVERSITARIA SAN MARTIN, FUNDACION UNIVERSITARIA SANITAS

his.medic <- 
  Grad %>% mutate(., CIU=chartr("ÁÉÍÓÚ", "AEIOU", toupper(`MUNICIPIO DE DOMICILIO DE LA IES`)),
                PA=chartr("ÁÉÍÓÚ", "AEIOU", toupper(`PROGRAMA ACADÉMICO`)) ) %>% # preparo el DF
  filter(., PA=="MEDICINA") %>% # Filtro por solo programas de medicina
  filter(., grepl('BOG', CIU)) %>% # filtro por ciudad
  group_by(., AÑO, SEMESTRE) %>% # Agrupo por año y semestre
  summarise(., MEDICOS=sum(GRADUADOS)) %>%  # Calculo la suma
  ungroup()
his.medic # visualizo el DF creado
## # A tibble: 8 × 3
##     AÑO SEMESTRE MEDICOS
##   <dbl>    <dbl>   <dbl>
## 1  2018        1    1119
## 2  2018        2    1198
## 3  2019        1    1055
## 4  2019        2    1226
## 5  2020        1    1379
## 6  2020        2     687
## 7  2021        1    1065
## 8  2021        2     944

Entre los años 2018 a 2021 se han graduado un total de 8673 medicos en Bogota

6. Indique el Número de programas en 2021 por nivel de formación y sector

num.prog.2021 <- Grad %>% 
  mutate(., NF=chartr("ÁÉÍÓÚ", "AEIOU", toupper(`NIVEL DE FORMACIÓN`)),
         SEC=chartr("ÁÉÍÓÚ", "AEIOU", toupper(`SECTOR IES`)) ) %>% # quito tildes y minusculas
  filter(., AÑO==2021) %>% # filtro solo año 2021
  group_by(., SEC, NF) %>% # agrupo
  summarise(., NUM.PROGRAMAS=n() ) %>% ungroup() %>% # resumo por numero de programas 
  pivot_wider(., names_from = SEC, values_from = NUM.PROGRAMAS) # Convierto a formato ancho
num.prog.2021
## # A tibble: 9 × 3
##   NF                                  OFICIAL PRIVADA
##   <chr>                                 <int>   <int>
## 1 DOCTORADO                               304     228
## 2 ESPECIALIZACION MEDICO QUIRURGICA       307     583
## 3 ESPECIALIZACION TECNICO PROFESIONAL      11       2
## 4 ESPECIALIZACION TECNOLOGICA             312      12
## 5 ESPECIALIZACION UNIVERSITARIA          2186    5973
## 6 FORMACION TECNICA PROFESIONAL           555    1038
## 7 MAESTRIA                               2023    2947
## 8 TECNOLOGICO                            8633    2250
## 9 UNIVERSITARIO                          7361   10117

Para el año 2021 se graduaron un total de 44842 estudiantes, de los cuales 21692 fueron provenientes de instituciones oficiales y 23150 de privadas

7. Indicar la cantidad de programas por metodología y por nivel académico por cada departamento

#Grad$`ID METODOLOGÍA`
prog.met.dpto <- Grad %>% 
  mutate(., 
         MET=chartr("ÁÉÍÓÚ", "AEIOU", toupper(`METODOLOGÍA`)),
         NAC=chartr("ÁÉÍÓÚ", "AEIOU", toupper(`NIVEL ACADEMICO`)),
         DEP=chartr("ÁÉÍÓÚ", "AEIOU", toupper(`DEPARTAMENTO DE DOMICILIO DE LA IES`)) ) %>%
  mutate(., ifelse(grepl("A DISTAN",MET)==TRUE, "DISTANCIA (TRADICIONAL)", MET) ) %>%
  select(., NAC, MET, DEP) %>%
  unite(., "NIVEL_METODOLOGIA", NAC:MET, remove = T) %>%
  group_by(., NIVEL_METODOLOGIA, DEP) %>% # agrupo
  summarise(., NUM.PROGRAMAS=n() ) %>% ungroup() %>%
  pivot_wider(., names_from = NIVEL_METODOLOGIA, values_from = NUM.PROGRAMAS) # Convierto a formato ancho
prog.met.dpto
## # A tibble: 33 × 15
##    DEP   POSGR…¹ POSGR…² POSGR…³ POSGR…⁴ POSGR…⁵ POSGR…⁶ PREGR…⁷ PREGR…⁸ PREGR…⁹
##    <chr>   <int>   <int>   <int>   <int>   <int>   <int>   <int>   <int>   <int>
##  1 ANTI…     116     362     400    7609       3     204     517    1689     390
##  2 BOGO…     466      NA      NA    5294       7    1050    2452      NA      NA
##  3 BOLI…       5      16      NA    1107      NA       2     151     577      48
##  4 BOYA…      14      46      48    1194      NA      34      35     165     163
##  5 CALD…      60     150      49    1596       4      16      53     204      98
##  6 CESAR      10      14      NA      56      NA      NA      NA      NA      NA
##  7 CHOCO      51      78      24      26      NA      13      42     120      NA
##  8 MAGD…       4      13      13     422      NA       4      31     111      NA
##  9 META        4      14      NA     256      NA      NA      NA      NA      NA
## 10 NORT…       7      25      35     645      NA      10     173     478      35
## # … with 23 more rows, 5 more variables: PREGRADO_PRESENCIAL <int>,
## #   `PREGRADO_PRESENCIAL-DUAL` <int>, `PREGRADO_PRESENCIAL-VIRTUAL` <int>,
## #   PREGRADO_VIRTUAL <int>, `PREGRADO_VIRTUAL-DUAL` <int>, and abbreviated
## #   variable names ¹​`POSGRADO_A DISTANCIA`,
## #   ²​`POSGRADO_DISTANCIA (TRADICIONAL)`, ³​`POSGRADO_DISTANCIA (VIRTUAL)`,
## #   ⁴​POSGRADO_PRESENCIAL, ⁵​`POSGRADO_PRESENCIAL-VIRTUAL`, ⁶​POSGRADO_VIRTUAL,
## #   ⁷​`PREGRADO_A DISTANCIA`, ⁸​`PREGRADO_DISTANCIA (TRADICIONAL)`, …

8. Considere la siguiente base de datos de población(DANE) por departamento en Colombia de los años 2018-2021

poblacion <- read_excel("poblacion.xlsx")
Pobl <- poblacion %>% pivot_longer(., cols=c("2018","2019","2020","2021"),
                                   names_to = "AÑO", values_to = "HAB") %>%
  mutate(., AÑO=as.numeric(AÑO), COD=as.numeric(Codepto), 
         DEPARTAMENTO=as.character(DEPARTAMENTO), HAB=as.numeric(HAB)) %>% 
  select(., AÑO, COD, DEPARTAMENTO, HAB) %>%
  unite(., "AÑO_COD", AÑO:COD, remove = T)

8. Calcular el número de graduados en posgrado por cada 100.000 habitantes para cada uno de los departamentos para cada año y departamento analizar los resultados

grad.depto <- Grad %>%
  group_by(., AÑO, `CÓDIGO DEL DEPARTAMENTO (IES)`) %>% 
  summarise(., GRADUADOS=sum(GRADUADOS)) %>% ungroup() %>% 
  mutate(., AÑO=as.numeric(AÑO), COD=as.numeric(`CÓDIGO DEL DEPARTAMENTO (IES)`), 
         GRADUADOS=as.numeric(GRADUADOS)) %>% 
  select(., AÑO, COD, GRADUADOS) %>%
  unite(., "AÑO_COD", AÑO:COD, remove = T) %>% 
  full_join(., Pobl, by=c("AÑO_COD") ) %>% 
  mutate(., TASA= round( (GRADUADOS/HAB)*100000, digits = 1 ) ) %>% 
  separate(., AÑO_COD, into=c("AÑO","COD"), sep="_") %>% 
  select(., AÑO, DEPARTAMENTO, TASA) %>% 
  pivot_wider(., names_from = AÑO, values_from = TASA) %>% 
  dplyr::arrange(., desc(`2021`) )
head(grad.depto, n = 10)
## # A tibble: 10 × 5
##    DEPARTAMENTO       `2018` `2019` `2020` `2021`
##    <chr>               <dbl>  <dbl>  <dbl>  <dbl>
##  1 BOGOTÁ, D.C.        3611.  3794.  3214.  3758.
##  2 SANTANDER           1087.  1067.   966.  1058.
##  3 ATLÁNTICO            844.   811.   867.   962.
##  4 BOYACÁ               763.   840.   533.   880.
##  5 CALDAS               934.   889.   793.   805 
##  6 ANTIOQUIA            731.   727.   656.   724.
##  7 QUINDÍO              808.   724.   747.   688.
##  8 RISARALDA            687.   688.   635.   628 
##  9 VALLE DEL CAUCA      536.   569    509.   582.
## 10 NORTE DE SANTANDER   520.   526.   470    549.
tail(grad.depto, n = 10)
## # A tibble: 10 × 5
##    DEPARTAMENTO                                      `2018` `2019` `2020` `2021`
##    <chr>                                              <dbl>  <dbl>  <dbl>  <dbl>
##  1 ARCHIPIÉLAGO DE SAN ANDRÉS, PROVIDENCIA Y SANTA …    8.2   44.8   14.1  148. 
##  2 META                                               155.   142.   118.   122. 
##  3 PUTUMAYO                                           138.   120.   114.   116. 
##  4 CASANARE                                            78.2   89.4   95.4   99.3
##  5 AMAZONAS                                            10.4    5.1   11.4   11.2
##  6 ARAUCA                                              NA     NA     NA     NA  
##  7 GUAINÍA                                             NA     NA     NA     NA  
##  8 GUAVIARE                                            NA     NA     NA     NA  
##  9 VAUPÉS                                              NA     NA     NA     NA  
## 10 VICHADA                                             NA     NA     NA     NA

Se observa que de los 32 departamentos de Colombia solo en Arauca, Guainia, Guaviare, Vaupes y Vichada no se tienen egresados universitarios, quizas porque no existen universidades allí. Asi mismo, los departamentos de San Andres, Meta, Putumayo, Casanare y Amazonas presentan las tasas de universitarios más bajas del pais, contrario a Bogota, Santander, Atlantico, Boyaca y Caldas donde se presentan los valores mas altos en ese orden. Además, se destaca que Bogota triplica al segundo en la lista, lo que muestra su importancia en la educacion así como la centralización de esta en Colombia. Por otro lado, aunque se espera un incremento de egresados por año, se observa una caida para casi todos los departamentos para el 2020, que puede estar explicada por el confinamiento y pandemia dada por el COVID19.