Este es un reporte final generado para el curso de R para análisis de datos en el revisamos el uso de los paquetes de tidyverse.
Para leer los datos utilizamos el paquete vroom
library(vroom)
library(janitor)
##
## Attaching package: 'janitor'
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
Leemos los siguientes datasets:
anuies: Datos de la Asociación Nacional de
Universidades e Instituciones de Educación Superiorhospitales: unidades de salud del Gobierno de
México.poblacion: resultados del Censo de Población del 2020
del INEGIanuies <- vroom("data/anuies.tsv")
hospitales <- vroom("data/hospitales.tsv")
poblacion <- vroom("data/poblacion.tsv") %>%
clean_names()
head(anuies)
## # A tibble: 6 × 15
## state_id state munic…¹ munic…² area_id area acade…³ acade…⁴ insti…⁵ insti…⁶
## <dbl> <chr> <dbl> <chr> <dbl> <chr> <dbl> <chr> <dbl> <chr>
## 1 1 Aguasc… 1001 Aguasc… 1 Educ… 10 Normal… 6 Centro…
## 2 1 Aguasc… 1001 Aguasc… 1 Educ… 10 Normal… 6 Centro…
## 3 1 Aguasc… 1001 Aguasc… 1 Educ… 10 Normal… 6 Centro…
## 4 1 Aguasc… 1001 Aguasc… 1 Educ… 10 Normal… 6 Centro…
## 5 1 Aguasc… 1001 Aguasc… 1 Educ… 10 Normal… 7 Escuel…
## 6 1 Aguasc… 1001 Aguasc… 1 Educ… 10 Normal… 8 Escuel…
## # … with 5 more variables: field_id <dbl>, field <chr>, sex_id <dbl>,
## # sex <chr>, students <dbl>, and abbreviated variable names ¹municipality_id,
## # ²municipality, ³academic_degree_id, ⁴academic_degree, ⁵institution_id,
## # ⁶institution
## # ℹ Use `colnames()` to see all variable names
Con los verbos del paquete dplyr podemos transformar nuestros datasets para obtener información importante.
library(dplyr)
Generamos un identificador para los municipios del dataset de población.
poblacion <- poblacion %>%
mutate(id = as.numeric(paste0(entidad, mun)))
Obtenemos el número de instituciones de educación superior y el número de unidades de salud por cada municipio en México.
anuies_by_mun <- anuies %>%
select(municipality_id, municipality, institution) %>%
distinct() %>%
group_by(municipality_id, municipality) %>%
tally(name="total_anuies")
hospitales_by_mun <- hospitales %>%
select(municipality_id, municipality, clues) %>%
distinct() %>%
group_by(municipality_id, municipality) %>%
tally(name="total_hosp")
Para unir ambos datasets utilizaremos la función
full_join() para obtener todas las filas que coincidan, o
no, en la unión.
anuies_hosp <- anuies_by_mun %>%
full_join(hospitales_by_mun,
by=c("municipality", "municipality_id")) %>%
replace(is.na(.), 0)
head(anuies_hosp)
## # A tibble: 6 × 4
## # Groups: municipality_id [6]
## municipality_id municipality total_anuies total_hosp
## <dbl> <chr> <int> <int>
## 1 1001 Aguascalientes 51 179
## 2 1003 Calvillo 1 26
## 3 1005 Jesús María 2 13
## 4 1006 Pabellón de Arteaga 1 8
## 5 1007 Rincón de Romos 4 21
## 6 1010 El Llano 2 6
Finalmente, vamos a unir el dataset generado con el de población
anuies_hosp_pob <- anuies_hosp %>%
left_join(poblacion, by = c("municipality_id" = "id"))
Para ver el resultado de nuestros análisis podemos generar gráficas utilizando el paquete ggplot.
library(ggplot2)
library(ggthemes)
En este caso construiremos una gráfica de puntos para analizar la correlación entre las instituciones de educación superior y las unidades de salud en los municipios
ggplot(data = anuies_hosp_pob, aes(x = total_hosp, y = total_anuies, color = pobtot, size = pobtot)) +
geom_point() +
geom_abline(color="darkred") +
labs(title = "Unidades de salud e instituciones de educación superior en México",
y = "Instituciones de educación superior",
x = "Unidades de salud") +
scale_color_continuous_tableau(name = "Población") +
scale_size(name = "Población", range = c(4, 12)) +
theme_base(base_size = 16)
## Warning: Removed 30 rows containing missing values (geom_point).
Y listo!