Lecciones del módulo (1/2)
Filtrar y Seleccionar Datos
El Tidyverse es una colección de paquetes de R diseñados para la ciencia de datos que comparten la misma filosofía de diseño y estructura de datos. El paquete principal para la manipulación de datos en esta suite se llama dplyr.
dplyr introduce una serie de funciones ("verbos") que hacen que la manipulación de data frames sea intuitiva.
El Operador Pipe (%>% o |>)
La filosofía del Tidyverse se basa en la concatenación de operaciones. El operador pipe %>% (o el operador nativo |> introducido en R 4.1+) toma el resultado de una expresión y lo pasa como primer argumento a la siguiente función. Esto evita anidar continuamente funciones o crear demasiadas variables temporales.
# Sin pipe:
filter(select(df, name, age), age > 20)
# Con pipe:
df %>%
select(name, age) %>%
filter(age > 20)
Verbos de dplyr para Filtrar y Seleccionar
Los tres verbos fundamentales para extraer información de un data frame son:
1. select()
Selecciona columnas específicas del data frame. Puedes listar los nombres de las columnas que deseas mantener o excluir usando el signo -.
# Selecciona las columnas 'name' y 'salary'
select(df, name, salary)
# Elimina la columna 'address'
select(df, -address)
2. filter()
Filtra las filas basándose en una o más condiciones lógicas.
# Filtra las filas donde age es mayor que 30
filter(df, age > 30)
# Filtra con múltiples condiciones (AND lógico)
filter(df, age > 30, department == "HR")
3. arrange()
Ordena las filas basándose en los valores de una o más columnas. Por defecto, el ordenamiento es ascendente. Para el ordenamiento descendente se usa desc().
# Ordena por age (ascendente)
arrange(df, age)
# Ordena por salary (descendente)
arrange(df, desc(salary))
Pruébalo tú
Ejercicio 1: Selecciona columnas
Dado el data frame df, selecciona las columnas name y age usando la función select() y guarda el resultado en df_selected.
Mostrar pista
Usa: df_selected <- select(df, name, age)
Solución disponible después de 3 intentos
Filtra las filas del data frame df en las que la columna age sea estrictamente mayor que 18, guardando el resultado en df_adults.
Mostrar pista
Usa la función filter(df, age > 18) y asigna el resultado a df_adults.
Solución disponible después de 3 intentos
Usa el operador pipe %>% para concatenar las operaciones: selecciona primero la columna name del data frame df, luego filtra manteniendo solo los registros con age > 18. Guarda el resultado en res.
Mostrar pista
Escribe: res <- df %>% filter(age > 18) %>% select(name)
Solución disponible después de 3 intentos
Ordena las filas del data frame df según la columna salary en orden descendente usando arrange() y desc(). Guarda el resultado en df_sorted.
Mostrar pista
Usa arrange(desc(salary)) dentro de una pipeline o como argumento directo.
Solución disponible después de 3 intentos
Escribe una pipeline completa sobre df: filtra los registros con department igual a 'IT', selecciona las columnas name y salary, y ordena el resultado según salary (orden ascendente). Guarda el resultado final en res.
Mostrar pista
Usa el pipe %>% para concatenar filter(department == 'IT'), select(name, salary) y arrange(salary).
Solución disponible después de 3 intentos