Lecciones del módulo (2/2)
Exploración y Agregación
R nace principalmente como un entorno estadístico, por lo que proporciona numerosas funciones nativas para analizar, resumir y comprender la distribución de datos en vectores o tablas.
Funciones Estadísticas Básicas
R permite calcular con extrema facilidad los principales índices de tendencia central y variabilidad en vectores numéricos:
mean(x): Calcula la media aritmética de los elementos.median(x): Calcula la mediana (el valor central).sd(x): Calcula la desviación estándar (medida de la dispersión de los datos).min(x)ymax(x): Devuelven el valor mínimo y máximo respectivamente.
values <- c(10, 12, 15, 18, 20, 22)
avg <- mean(values)
dispersion <- sd(values)
cat("Media:", avg, "- Dev. Std:", round(dispersion, 2), "\n")
Gestión de Datos Faltantes (NA)
En el mundo real, los conjuntos de datos contienen a menudo valores faltantes, representados en R por la entidad especial NA (Not Available).
Si intentas calcular la media o cualquier otro agregado en un vector que contiene aunque sea un solo NA, R devolverá NA como resultado. Para ignorar los valores faltantes, debes pasar el argumento lógico na.rm = TRUE (NA remove):
temperatures <- c(18, 21, NA, 24, 19)
# Esto devolverá NA
print(mean(temperatures))
# Esto ignorará el NA y realizará el cálculo sobre los valores válidos
print(mean(temperatures, na.rm = TRUE))
Resumen Global con summary()
La función summary() es una herramienta potente que proporciona una visión estadística completa de un vector o de un Data Frame completo, mostrando el mínimo, primer cuartil, mediana, media, tercer cuartil y máximo:
prices <- c(5, 10, 15, 20, 100)
print(summary(prices))
Agregación de Datos con aggregate
Al trabajar con data frames, es común querer calcular estadísticas de resumen (como la media o la suma) por grupos o categorías. La función aggregate() en R simplifica este proceso:
df <- data.frame(
department = c("HR", "IT", "HR", "IT"),
salary = c(3000, 4500, 3200, 4800)
)
# Calcula la media de los salarios por departamento
avg_salaries <- aggregate(salary ~ department, data = df, FUN = mean)
print(avg_salaries)
La sintaxis salary ~ department significa "analiza la variable salary en función de la variable department". El argumento FUN = mean especifica que queremos calcular la media aritmética de cada grupo.
Filtrado Avanzado con subset
La función subset() proporciona una forma intuitiva y elegante de extraer subconjuntos de filas y columnas de un data frame, evitando el uso de corchetes complejos:
employees <- data.frame(
name = c("Alice", "Bob", "Charlie"),
age = c(25, 34, 29),
active = c(TRUE, FALSE, TRUE)
)
# Filtra solo los empleados activos con edad superior a 28
active_employees <- subset(employees, active == TRUE & age > 28)
Pruébalo tú
Dado el vector temperatures, calcula la media y guárdala en la variable mean_temp. Luego calcula la mediana y guárdala en median_temp.
Mostrar pista
Usa mean_temp <- mean(temperatures) y median_temp <- median(temperatures)
Solución disponible después de 3 intentos
Dado el vector scores que contiene un valor NA, calcula la desviación estándar del vector excluyendo los valores faltantes y guárdala en la variable sd_scores.
Mostrar pista
Usa la función sd() con el argumento na.rm = TRUE: sd_scores <- sd(scores, na.rm = TRUE)
Solución disponible después de 3 intentos
Dado el data frame df, obtén el resumen estadístico (summary) de la columna values y guárdalo en la variable stats_summary.
Mostrar pista
Extrae la columna usando el operador $ y pásala a summary(): stats_summary <- summary(df$values)
Solución disponible después de 3 intentos
Dado el data frame sales, usa la función aggregate() para calcular la suma (FUN = sum) de la columna revenue agrupada por la columna region. Guarda el resultado en la variable region_sales.
Mostrar pista
Usa: region_sales <- aggregate(revenue ~ region, data = sales, FUN = sum)
Solución disponible después de 3 intentos
Dado el data frame products, usa la función subset() para filtrar solo los productos que pertenecen a la categoría 'Electronics' (category == 'Electronics') y que tienen un precio mayor que 100 (price > 100). Guarda el resultado en la variable expensive_electronics.
Mostrar pista
Usa: expensive_electronics <- subset(products, category == 'Electronics' & price > 100)
Solución disponible después de 3 intentos