Saltar al contenido principal
eLearner.app
Módulo 4 · Lección 2 de 28/10 en el curso~15 min
Lecciones del módulo (2/2)

Mutaciones y Agregaciones

Además de seleccionar y filtrar, dplyr ofrece potentes funcionalidades para crear nuevas columnas calculadas y para resumir los datos agregándolos en grupos.


Crear Nuevas Columnas: mutate()

El verbo mutate() permite calcular nuevas columnas o modificar columnas existentes, manteniendo intactas las columnas originales.

Code
# Agrega una columna 'double_salary' calculada sobre el valor de 'salary'
df %>%
  mutate(double_salary = salary * 2)

# Puedes crear múltiples columnas al mismo tiempo
df %>%
  mutate(
    total_cost = quantity * price,
    tax = total_cost * 0.22
  )

Agrupación y Agregación: group_by() y summarise()

A menudo, el análisis de datos requiere el cálculo de estadísticas de resumen (ej. media, suma, conteo) para grupos de filas (por ejemplo, calcular el salario medio para cada departamento).

1. group_by()

Agrupa el data frame basándose en los valores de una o más columnas. Por sí solo no cambia el aspecto visual de los datos, pero le indica a dplyr que las operaciones siguientes deberán ejecutarse "grupo por grupo".

2. summarise() (o summarize())

Reduce muchas filas a una sola fila de resumen aplicando funciones estadísticas como mean(), sum(), min(), max(), o n() (que cuenta las filas).

Code
# Calcula el salario medio por departamento
df %>%
  group_by(department) %>%
  summarise(mean_salary = mean(salary))

Si deseas contar cuántos registros pertenecen a cada grupo:

Code
# Cuenta cuántos empleados hay por ciudad
df %>%
  group_by(city) %>%
  summarise(count = n())

Pruébalo tú

Ejercicio 1: Crea una columna calculada

Ejercicio#r.m4.l2.e1
Intentos: 0Cargando...

Dado el data frame df, crea una nueva columna llamada total_price multiplicando la columna quantity por la columna price usando mutate(). Guarda el resultado en df_new.

Cargando editor...
Mostrar pista

Usa mutate(total_price = quantity * price) dentro de una pipeline sobre df.

Solución disponible después de 3 intentos

Ejercicio 2: Agrupa y resume con la media

Ejercicio#r.m4.l2.e2
Intentos: 0Cargando...

Calcula la media de la columna salary agrupando los registros por la columna department. Guarda la columna agregada con el nombre mean_salary y asigna el resultado final a df_grouped.

Cargando editor...
Mostrar pista

Usa df %>% group_by(department) %>% summarise(mean_salary = mean(salary))

Solución disponible después de 3 intentos

Ejercicio 3: Cuenta elementos por grupo

Ejercicio#r.m4.l2.e3
Intentos: 0Cargando...

Cuenta el número de filas para cada ciudad (columna city). Asigna el conteo a la variable count dentro de summarise() usando la función n() y guarda el resultado final en df_counts.

Cargando editor...
Mostrar pista

Combina group_by(city) con summarise(count = n()) en una pipeline.

Solución disponible después de 3 intentos

Ejercicio 4: Resúmenes múltiples

Ejercicio#r.m4.l2.e4
Intentos: 0Cargando...

Calcula el valor mínimo (min_price) y el valor máximo (max_price) de la columna price agrupando por la columna category. Guarda el resultado en df_summary.

Cargando editor...
Mostrar pista

Dentro de summarise(), separa las métricas min_price = min(price) y max_price = max(price) con una coma.

Solución disponible después de 3 intentos

Ejercicio 5: Agregación y filtros combinados

Ejercicio#r.m4.l2.e5
Intentos: 0Cargando...

Escribe una pipeline que agrupe df por la columna department, calcule la media de salary guardándola en la nueva columna avg_salary usando mutate() (atención: usa mutate, no summarise, para mantener todas las filas), y finalmente filtre manteniendo solo los registros con salary estrictamente mayor que avg_salary. Guarda el resultado en res.

Cargando editor...
Mostrar pista

Usa df %>% group_by(department) %>% mutate(avg_salary = mean(salary)) %>% filter(salary > avg_salary)

Solución disponible después de 3 intentos