Skip to content

Instantly share code, notes, and snippets.

@gbaeza2002
Created November 6, 2024 23:16
Show Gist options
  • Save gbaeza2002/5a52db0ac7f38c81fc5fa8caaa7376ee to your computer and use it in GitHub Desktop.
Save gbaeza2002/5a52db0ac7f38c81fc5fa8caaa7376ee to your computer and use it in GitHub Desktop.
análisis de matriculas de colegios con R
#install.packages("RMySQL")
#install.packages("dplyr")
#install.packages("ggplot2")
#2.- Habilitacion de paquetes
library(RMySQL)
library(dplyr)
library(ggplot2)
#3.- Establecemos conexion con bd
conexion <- dbConnect(MySQL(),user="graciany",
password="root",
dbname="trabajos_mineria",
host="192.168.6.4")
# Cargar los datos desde la base de datos
datos_todos <- dbGetQuery(conexion, "SELECT * FROM matriculas_2023_agrupacion")
# Filtro para seleccionar solo los colegios de la comuna de TEMUCO
datos_temuco <- datos_todos %>% filter(trimws(NOM_COM_RBD) == "TEMUCO")
# Filtrar los 10 colegios con mayores matrícula de Temuco
top_10_colegios <- datos_temuco %>% arrange(desc(MAT_TOTAL)) %>% head(10)
# Filtro para seleccionar solo el colegio "INSTITUTO CLARET" su rbd es 5654
colegio_claret <- datos_todos %>% filter(RBD == 5654)
#Filtro para seleccionar solo el colegio "LICEO POLITECNICO PUEBLO NUEVO" su rbd es 5656
colegio_politenicoPuebloNuevo <- datos_todos %>% filter(RBD == 5656)
#Gráfico de barras: Top 10 Colegios con Mayor Matrícula en Temuco
#------------------------------------------------------------------------------------------------------------
ggplot(top_10_colegios, aes(x = reorder(NOM_RBD, -MAT_TOTAL), y = MAT_TOTAL)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(title = "Top 10 Colegios con Mayor Matrícula en Temuco",
x = "Nombre del Colegio",
y = "Total de Matrículas") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) + # Rotar etiquetas del eje x
coord_flip() # Opcional: voltear los ejes para mejorar la legibilidad
#Gráfico de torta: Calcular totales de mujeres y hombres para instituto claret
#------------------------------------------------------------------------------------------------------------
totales <- data.frame(
Categoria = c("Mujeres", "Hombres"),
Total = c(colegio_claret$MAT_MUJ_TOT, colegio_claret$MAT_HOM_TOT)
)
# Calcular los porcentajes
totales <- totales %>%
mutate(Porcentaje = Total / sum(Total) * 100)
# Crear el gráfico de torta
ggplot(totales, aes(x = "", y = Total, fill = Categoria)) +
geom_bar(width = 1, stat = "identity") +
coord_polar(theta = "y") +
labs(title = "Distribución de Matriculados por Género en el Instituto Claret") +
theme_void() +
scale_fill_manual(values = c("blue", "pink")) +
geom_text(aes(label = paste0(round(Porcentaje, 1), "%")),
position = position_stack(vjust = 0.5),
color = "white")
#Gráfico de torta: Calcular totales de mujeres y hombres para Liceo Politecnico Pueblo Nuevo
#------------------------------------------------------------------------------------------------------------
# Calcular totales de mujeres y hombres
totales_puebloNuevo <- data.frame(
Categoria = c("Mujeres", "Hombres"),
Total = c(colegio_politenicoPuebloNuevo$MAT_MUJ_TOT, colegio_politenicoPuebloNuevo$MAT_HOM_TOT)
)
# Calcular los porcentajes
totales_puebloNuevo <- totales_puebloNuevo %>%
mutate(Porcentaje = Total / sum(Total) * 100)
# Crear el gráfico de torta
ggplot(totales_puebloNuevo, aes(x = "", y = Total, fill = Categoria)) +
geom_bar(width = 1, stat = "identity") +
coord_polar(theta = "y") +
labs(title = "Distribución de Matriculados por Género en el Colegio Politécnico Pueblo Nuevo") +
theme_void() +
scale_fill_manual(values = c("blue", "pink")) +
geom_text(aes(label = paste0(round(Porcentaje, 1), "%")),
position = position_stack(vjust = 0.5),
color = "white")
#Histograma de Tamaño de Matrícula en los Colegios de Temuco
#------------------------------------------------------------------------------------------------------------
ggplot(datos_temuco, aes(x = MAT_TOTAL)) +
geom_histogram(binwidth = 100, fill = "cornflowerblue", color = "black") +
labs(title = "Distribución de Tamaño de Matrícula en Colegios de Temuco (Rangos de 500)",
x = "Total Matrículas", y = "Frecuencia") +
theme_minimal() +
scale_x_continuous(breaks = seq(0, max(datos_temuco$MAT_TOTAL), by = 500))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment