Identificación de entidades federativas de estudiantes de la Maestría en Economía BUAP
Utilizaremos la estructura de control case_when() para
imputar el nombre de la entidad federativa (o país) a cada uno de los
alumnos de las diferentes generaciones de la maestría en economía de la
BUAP, tomando como referencia el catálogo del INEGI.
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# Crear los vectores correspondientes
nombre <- c("Alam", "Enrique", "Eddy", "César", "Marcel", "Surya", "Jany", "Yubi", "Noelia", "Michelle", "Juan", "Christian")
edad <- c(32, 27, 35, 35, 26, 32, 29, 24, 39, 40, 50, 30)
estatura <- c(1.73, 1.75, 1.7, 1.74, 1.55, 1.56, 1.65, 1.58, 1.59, 1.6, 1.7, 1.72)
estado <- c(21, 21, 21, 30, 30, 30, 200, 200, 21, 13, 14, 19)
# Convertir en data frame
data <- data.frame(nombre, edad, estatura, estado)
# Inspeccionar la estructura de los datos
str(data)## 'data.frame': 12 obs. of 4 variables:
## $ nombre : chr "Alam" "Enrique" "Eddy" "César" ...
## $ edad : num 32 27 35 35 26 32 29 24 39 40 ...
## $ estatura: num 1.73 1.75 1.7 1.74 1.55 1.56 1.65 1.58 1.59 1.6 ...
## $ estado : num 21 21 21 30 30 30 200 200 21 13 ...
## nombre edad estatura estado
## 1 Alam 32 1.73 21
## 2 Enrique 27 1.75 21
## 3 Eddy 35 1.70 21
## 4 César 35 1.74 30
## 5 Marcel 26 1.55 30
## 6 Surya 32 1.56 30
## 7 Jany 29 1.65 200
## 8 Yubi 24 1.58 200
## 9 Noelia 39 1.59 21
## 10 Michelle 40 1.60 13
## 11 Juan 50 1.70 14
## 12 Christian 30 1.72 19
Ahora utilizaremos mutate() junto con case_when() para crear una nueva columna que identifique el nombre de la entidad federativa según el catálogo del INEGI.
# Crear nueva base de datos con la identificación de entidades federativas
datanew <- data %>%
mutate(estado_origen = case_when(
estado == 1 ~ "Aguascalientes",
estado == 2 ~ "Baja California",
estado == 3 ~ "Baja California Sur",
estado == 4 ~ "Campeche",
estado == 5 ~ "Coahuila de Zaragoza",
estado == 6 ~ "Colima",
estado == 7 ~ "Chiapas",
estado == 8 ~ "Chihuahua",
estado == 9 ~ "Distrito Federal",
estado == 10 ~ "Durango",
estado == 11 ~ "Guanajuato",
estado == 12 ~ "Guerrero",
estado == 13 ~ "Hidalgo",
estado == 14 ~ "Jalisco",
estado == 15 ~ "México",
estado == 16 ~ "Michoacán de Ocampo",
estado == 17 ~ "Morelos",
estado == 18 ~ "Nayarit",
estado == 19 ~ "Nuevo León",
estado == 20 ~ "Oaxaca",
estado == 21 ~ "Puebla",
estado == 22 ~ "Querétaro",
estado == 23 ~ "Quintana Roo",
estado == 24 ~ "San Luis Potosí",
estado == 25 ~ "Sinaloa",
estado == 26 ~ "Sonora",
estado == 27 ~ "Tabasco",
estado == 28 ~ "Tamaulipas",
estado == 29 ~ "Tlaxcala",
estado == 30 ~ "Veracruz de Ignacio de la Llave",
estado == 31 ~ "Yucatán",
estado == 32 ~ "Zacatecas",
estado == 200 ~ "Otro país de América"
))
datanew## nombre edad estatura estado estado_origen
## 1 Alam 32 1.73 21 Puebla
## 2 Enrique 27 1.75 21 Puebla
## 3 Eddy 35 1.70 21 Puebla
## 4 César 35 1.74 30 Veracruz de Ignacio de la Llave
## 5 Marcel 26 1.55 30 Veracruz de Ignacio de la Llave
## 6 Surya 32 1.56 30 Veracruz de Ignacio de la Llave
## 7 Jany 29 1.65 200 Otro país de América
## 8 Yubi 24 1.58 200 Otro país de América
## 9 Noelia 39 1.59 21 Puebla
## 10 Michelle 40 1.60 13 Hidalgo
## 11 Juan 50 1.70 14 Jalisco
## 12 Christian 30 1.72 19 Nuevo León
¿Identificó qué hizo mutate() a su data frame?
La función mutate() del paquete dplyr (parte de tidyverse) agregó una nueva columna llamada estado_origen al data frame original data, creando así el nuevo data frame datanew.
Lo que hace mutate() específicamente es:
Toma el data frame original (data)
Crea una nueva variable (estado_origen)
Asigna valores a esta nueva variable según las condiciones especificadas en case_when()
Devuelve un nuevo data frame (datanew) con todas las columnas originales más la nueva columna