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
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.
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
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
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
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
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
#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)`, …
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)
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.