library(readr)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# Carga tu archivo csv
nacimientos <- read_csv("Nacimientos_2023.csv")
## Rows: 1521280 Columns: 64
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (21): ENTIDADNACIMIENTO, MUNICIPIONACIMIENTO, FECHANACIMIENTOMADRE, ENT...
## dbl (41): NACIOEXTRANJERO, EDAD, SECONSIDERAINDIGENA, HABLALENGUAINDIGENA, ...
## time (2): HORANACIMIENTO, TIEMPOTRASLADO
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
A partir del nacimientos
, extrae sólo los datos de los
nacidos en enero, febrero y marzo de 2023.
Para cada uno de esos tres meses, calcula:
El número total de nacimientos,
El peso promedio al nacer,
El porcentaje de madres que hablan lengua indígena.
Guarda el resultado en un nuevo data frame llamado resumen_trimestre_1.
nacimientos$FECHANACIMIENTO <- as.Date(nacimientos$FECHANACIMIENTO, format = "%d/%m/%Y")
resumen_trimestre_1 <- nacimientos %>%
filter(format(FECHANACIMIENTO, "%Y-%m") %in% c("2023-01", "2023-02", "2023-03")) %>%
group_by(mes = format(FECHANACIMIENTO, "%Y-%m")) %>%
summarise(
total_nacimientos = n(),
peso_promedio = mean(PESO, na.rm = TRUE),
porcentaje_lengua_indigena = mean(HABLALENGUAINDIGENA == "1", na.rm = TRUE) * 100
)
Genera el data frame nacimientos_nl
(sólo Nuevo León) y
crea una nueva variable rango_edad
con estas
categorías:
“< 18”
“18–24”
“25–34”
“≥ 35”
Renombra las columnas clave a minúsculas y con guiones bajos.
Exporta el resultado con write_csv() a un archivo llamado nacimientos_nl_edad_por_rango.csv.
nacimientos_nl <- nacimientos %>%
filter(ENTIDADFEDERATIVAPARTO == 19) %>%
mutate(
rango_edad = case_when(
EDAD < 18 ~ "< 18",
EDAD >= 18 & EDAD <= 24 ~ "18–24",
EDAD >= 25 & EDAD <= 34 ~ "25–34",
EDAD >= 35 ~ "≥ 35",
TRUE ~ NA_character_
)
) %>%
rename_with(~ tolower(gsub(" ", "_", .x)))
write_csv(nacimientos_nl, "nacimientos_nl_edad_por_rango.csv")
Con el data frame nacimientos
, crea un gráfico de barras
(geom_col()) de total_personas por cada categoría de
estado_conyugal.
Después, usando el objeto original nacimientos, haz un scatterplot de EDAD vs. NUMEROEMBARAZOS, coloreando por estado_conyugal.
Sobre ese scatterplot, añade una línea de tendencia (geom_smooth) que muestre la tendencia de número de embarazos en función de la edad.
library(ggplot2)
# Re-codificar variable de estado conyugal
nacimientos <- nacimientos %>%
mutate(ESTADOCONYUGAL = case_when(
ESTADOCONYUGAL == "1" ~ "Soltera",
ESTADOCONYUGAL == "2" ~ "Casada",
ESTADOCONYUGAL == "3" ~ "Unión libre",
ESTADOCONYUGAL == "4" ~ "Divorciada",
ESTADOCONYUGAL == "5" ~ "Viuda",
TRUE ~ "Desconocido"
))
# Gráfico de barras de total_personas por estado_conyugal
ggplot(nacimientos, aes(x = ESTADOCONYUGAL)) +
geom_bar(fill = "skyblue") +
labs(title = "Total de nacimientos por estado conyugal",
x = "Estado conyugal",
y = "Total de nacimientos") +
theme_minimal()