Ejercicio dplyr
En esta sección pondrás en práctica lo aprendido en este módulo. El objetivo es que puedas aplicar las funciones de dplyr
a un conjunto de datos real. Esto será importante para las próximas secciones, donde aprenderás a realizar análisis estadísticos y visualizaciones de datos. Sin embargo, antes de que veamos estos temas, es importante que te sientas cómodo trabajando con dplyr
, manejando datos y realizando transformaciones básicas.
Vamos a simular el flujo de trabajo que seguirías en un proyecto de análisis de datos. Al terminar este ejercicio, se recomienda que repitas el proceso con tus propios datos o con otros conjuntos de datos que te interesen en tu computadora utilizando RStudio.
Cargar librería y datos
Para este ejercicio, vamos a trabajar con 2 librerías: dplyr
y datos
. La librería datos (install.packages("datos")
en tu RStudio, en esta sesión ya está instalada) contiene varios conjuntos de datos en español. En este caso, vamos a trabajar con el conjunto de datos pinguinos
que contiene medidas de tamaño de pingüinos adultos en busca de comida cerca de la estación Palmer en la Antártica.
Carga la librería dplyr
y la librería datos
Para conocer más sobre un conjunto de datos, puedes utilizar la función help(pinguinos)
o ?pinguinos
.
El conjunto de datos pinguinos contiene las siguientes variables:
Variable Name | Description |
---|---|
especie |
Especie de pingüino |
isla |
Isla donde se encontró el pingüino |
largo_pico_mm |
Longitud del pico en milímetros |
alto_pico_mm |
Profundidad del pico en milímetros |
largo_aleta_mm |
Longitud de la aleta en milímetros |
masa_corporal_g |
Masa corporal en gramos |
sexo |
Sexo del pingüino |
anio |
Año de la medición |
Inspecciona los datos con glimpse()
Utiliza la siguiente consola para contestar esta pregunta: ¿Cuántas especies de pingüinos hay en el conjunto de datos? Recuerda que los nombres de las especies están en la variable
especie
. Puedes usar cualquier método que prefieras para encontrar la respuesta. Cuando tengas la respuesta, escribe los nombres de las especies en la línea punteada en la consola de abajo y checa tu respuesta. NOTA. Asegurate de usar mayúsculas y no poner acentos en los nombres de las especies. Escribe los nombres en órden alfabético en tu respuesta.
recuerda las siguientes funciones de dplyr:
distinct()
count()
pull()
Recuerda usar pipas %>%
para encadenar funciones de dplyr de manera más eficiente.
%>%
datos distinct(columna)
%>%
pinguinos distinct(especie)
<- c("Adelia", "Barbijo", "Papua")
nombre_especies print(nombre_especies)
Utiliza la siguiente consola para contestar esta pregunta: ¿Cuántos pingüinos hembras hay? Recuerda que los sexos en la variable
sexo
. Puedes usar cualquier método que prefieras para encontrar la respuesta. Cuando tengas la respuesta, escribe el valor en la línea punteada en la consola de abajo y checa tu respuesta.
recuerda las siguientes funciones de dplyr:
count()
Recuerda usar pipas %>%
para encadenar funciones de dplyr de manera más eficiente.
%>%
datos count(columna)
%>%
pinguinos distinct(sexo)
<- 165
numero_pinguinos_hembras
print(numero_pinguinos_hembras)
en nuestros datos, la variable
anio
está registrada como una variable numérica. Aunque esto no está mal, queremos recodificarla a una variable de tipofactor
. Escribe tu respuesta en la línea punteada en la consola de abajo y checa tu respuesta.
<- pinguinos %>%
pinguinos_factor mutate(anio = as.factor(anio))
En el siguiente ejercicio, elimina todas las observaciones con
NA
(observaciones faltantes) en nuestro dataset para que en el futuro evitemos errores. Primero corre el código siguiente para explorar cuántos datos faltantes hay en cada variable. Cuando tengas tu respuesta, escribe el valor en la línea punteada en la consola de abajo y checa tu respuesta. Recuerda la funciónna_omit()
para eliminar los datos faltantes.
<- pinguinos %>%
pinguinos_na na.omit()
Ahora, vamos a realizar lo siguiente: pasa todas las variables que miden longitud y masa a centímetros y kilogramos, respectivamente. Recuerda que 1 milímetro es igual a 0.1 centímetros y 1 gramo es igual a 0.001 kilogramos. Después de calcular las nuevas variables, caulcula el promedio y desviación estándar de estas nuevas variables. revisa los datos con
glimpse()
para asegurarte de que los cambios se hayan realizado correctamente. Escribe tu respuesta en la línea punteada en la consola de abajo y checa tu respuesta.
# Convertir longitudes y masas a cm y kg, respectivamente
<- pinguinos %>%
pinguinos_limpio na.omit() %>% # Eliminar datos faltantes
mutate(
largo_pico_cm = largo_pico_mm * 0.1, # Convertir milímetros a centímetros
alto_pico_cm = alto_pico_mm * 0.1, # Convertir milímetros a centímetros
largo_aleta_cm = largo_aleta_mm * 0.1, # Convertir milímetros a centímetros
masa_corporal_kg = masa_corporal_g * 0.001 # Convertir gramos a kilogramos
)
# Revisa los datos con 'glimpse()' para verificar que los cambios se realizaron correctamente.
glimpse(pinguinos_limpio)
# Calcula el promedio y desviación estándar de las nuevas variables
<- pinguinos_limpio %>%
pinguinos_resumen summarize(
pico_promedio = mean(largo_pico_cm),
pico_sd = sd(largo_pico_cm),
alto_promedio = mean(alto_pico_cm),
alto_sd = sd(alto_pico_cm),
aleta_promedio = mean(largo_aleta_cm),
aleta_sd = sd(largo_aleta_cm),
masa_promedio = mean(masa_corporal_kg),
masa_sd = sd(masa_corporal_kg)
)
glimpse(pinguinos_resumen)
Podemos usar condiciones lógicas para realizar más facil este código. Por ejemplo, podemos usar ends_with()
para seleccionar columnas que terminan con un patrón específico (“mm” y “g”). Después, utilizamos .names
para asignar nombres a las nuevas columnas con el formato “nuevo_{.col}cm” y “nuevo{.col}_kg”. Este argumento crea automáticamente nombres con el patrón nuevo+nombre de la columna original+_cm o _kg. Se hace lo mismo para las columnas que terminan con “g”.
Ahora, vamos a construir un histograma de las masas corporales de los pingüinos en cada especie. En el próximo módulo veremos cómo construir estos gráficos a detalle. Por el momento, solo corre el siguiente código y observa el histograma que se genera. A partir de éste, contesta las siguientes preguntas.
Responde: Con base en las masas corporales de los pingüinos en cada especie, ¿cuál de las siguientes afirmaciones es verdadera?
- Los pingüinos de la especie Adelia tienen una masa corporal promedio mayor que los de la especie Papúa.
- Los pingüinos de la especie Papúa tienen una masa corporal promedio mayor que los de la especie Barbijo.
- No se puede determinar la masa corporal promedio de los pingüinos en cada especie a partir del histograma.
Por último, realiza este ejercicio.
El código que visualiza las distribuciones de alturas con líneas que representan 1, 2 y 3 desviaciones estándar nos permite entender cómo se distribuyen los datos alrededor de la media de cada especie. Esto es muy útil para formular preguntas sobre la variabilidad y la dispersión de los datos alrededor de la media, así como para identificar qué porcentaje de los datos cae dentro de uno, dos o tres desviaciones estándar de la media, según la regla empírica (68-95-99.7% para distribuciones normales). Ejecuta el siguiente código y observa los histogramas con las líneas de las desviaciones estándar.
Con base en los histogramas y las líneas que representan las desviaciones estándar (1, 2 y 3), ¿cuál de las siguientes afirmaciones es correcta?
- Aproximadamente el 68% de los datos de todas las especies cae dentro de 1 desviación estándar de la media.
- Aproximadamente el 95% de los datos de todas las especies cae dentro de 2 desviaciones estándar de la media.
- Aproximadamente el 99.7% de los datos de todas las especies cae dentro de 3 desviaciones estándar de la media.