Ya tuvimos un primer acercamiento a esta librería, profundizaremos más en sus funciones principales para poderlas implementar con éxito.
Carguemos nuestra librería dplyr
library(dplyr)
Carguemos nuestra base de datos de la Ecuesta Así Vamos 2021
eav21 <- read.csv("EAV_2021.csv")
Para fines de este ejemplo trabajemos sólo con una
Ahondemos un poco en la librería dplyr
Esta librería incluye un conjunto de comandos que coinciden con las
acciones más comunes que se realizan sobre un conjunto de datos. Por
ejemplo seleccionar filas filter, seleccionar columnas
select, ordenar arrange, añadir nuevas
variables mutate, resumir mediante alguna medida numérica
summarise. Lo que hace que la sintaxis sea especialmente
clara es la correspondencia tan nítida entre el comando y la acción.
Para llevar a cabo estas acciones debemos tener en cuenta algunas
características comunes:
Esta acción consiste en seleccionar las observaciones (filas) que cumplen las condiciones que nos interesan.
eav21_filter<-filter(eav21, m18_sex == 'Mujer') #Filtro por sexo
eav21_filter<-filter(eav21, cp3_a1 >= 35) #Filtro si eres mayor de 35 años
eav21_filter<-filter(eav21, m18_sex == 'Mujer' & cp3_a1 >= 35) #filtro con ambas características
Ahora utiliza la función filter para determinar cuantos
hombre de 40 años o más que viven en Apodaca, Monterrey y San Nicolás se
incluyen en esta encuesta.
Esta acción consiste en elegir un subconjunto de las variables (columnas) del fichero.
eav21_select<-select(eav21, m04_mun, m05_nom, m18_sex, cp3_a1)
Es posible seleccionar un rango de columnas utilizando
:
eav21_select<-select(eav21, id:cp3_a1)
O también se pueden elegir todas las columnas excepto algunas.
eav21_select<-select(eav21, -id, -m04_mun)
Otra posibilidad es seleccionar las variables cuyo nombre contenga ciertos términos:
eav21_select<-select(eav21, contains('mun'))
En lugar de contains, se puede hacer un uso similar con las
siguientes expresiones: starts_with, ends_with
o matches.
Ahora utiliza la función select para crear un data frame
con todas las preguntas p_ de la encuesta.
Ordena las filas de menor a mayor valor de la variable elegida.
eav21_arrange<-arrange(eav21, cp3_a1)
Si escribimos un signo menos, ordena de mayor a menor.
eav21_arrange<-arrange(eav21, -m04_mun)
Es posible ordenar respecto de una variable y resolver los empates de acuerdo con una segunda variable. El siguiente comando ordena los datos según la edad (por ascendente) y dentro de cada clave municipal ordena de menor a mayor.
eav21_arrange<-arrange(eav21, cp3_a1, m04_mun)
Ahora utiliza la función arrange para ordenar con
respecto a la edad y el sexo.
El paquete incorpora una sintaxis encadenada que permite escribir las acciones en un orden natural.
Primero se escribe el nombre de la base de datos y luego las acciones en el orden en que se realizan separadas por el operador %>% (que podríamos leer como entonces). Por ejemplo, si queremos seleccionar las columnas desde id hasta la edad, además seleccionar las observaciones para las personas menores de 30 años y ordenarlos de menor a mayor por la clave municipal, el sexo y edad, podemos escribir:
eav21_cadena<-eav21 %>%
select(id:cp3_a1) %>%
filter(cp3_a1<30) %>%
arrange(m04_mun, m18_sex, cp3_a1)
La sintaxis encadenada permite un código significativamente más fácil de leer y entender. Una observación importante es que una vez cargado dplyr podemos usar la sintaxis en cadena con otros comandos de R. Esta característica hace que dplyr sea un paquete que puede influir bastante en la manera de escribir código en R.
Seguimos con las acciones básicas implementadas en la librería. Veamos como crear nuevas variables que son función de las ya existentes.
Pensemos que quiero crear una nueva variable en función de la edad:
eav21_mutate<-eav21%>%
mutate(nueva_variable=ifelse(cp3_a1<32, "millenial", "no millenial"))%>%
select(cp3_a1,nueva_variable)
Esta división no es adecuada considera que si la persona tiene entre
18 y 28 años es Generación Z, si tiene entre 29 y 41 años es Millenial,
si tiene entre 42 y 53 años es Generación X, si tiene entre 54 y 73 años
es Baby Boomer y si tiene 74 años o más es Silent Generation. Ahora
corregi la nueva_variable con el mutate y el
ifelse para que las características correspondan con la
edad.