En nuestra serie sobre Tidyverse, hemos cubierto herramientas como readr
, dplyr
, y tidyr
. Hoy, nos adentraremos en dos paquetes más: forcats
para el manejo de factores y purrr
para la programación funcional. Acompáñame a descubrir cómo estas herramientas pueden facilitar y enriquecer nuestro trabajo con datos en R.
Manejo de Factores con forcats
Los factores son esenciales en R para manejar datos categóricos. forcats
ofrece funciones intuitivas para trabajar con ellos.
Ejemplo Práctico con forcats
Supongamos que tenemos un conjunto de datos con categorías y valores asociados:
library(dplyr)
library(forcats)
# Crear un conjunto de datos de ejemplo
set.seed(123)
data <- tibble(
categoria = sample(c("A", "B", "C", "D"), 100, replace = TRUE),
valor = rnorm(100)
)
- Reordenar Factores: Queremos reordenar
categoria
basándonos en la media devalor
:
data <- data %>%
mutate(categoria = fct_reorder(categoria, valor, .fun = mean))
- Cambiar Niveles de Factores: Movemos el nivel ‘C’ al frente:
data <- data %>%
mutate(categoria = fct_relevel(categoria, "C"))
- Colapsar Niveles: Unimos ‘B’ y ‘C’ en una nueva categoría ‘Otros’:
data <- data %>%
mutate(categoria = fct_collapse(categoria, Otros = c("B", "C")))
Programación Funcional con purrr
purrr
mejora la programación funcional en R, facilitando la manipulación de listas y vectores.
Pero antes de mostrar ejemplos con purrr, veamos dos funciones muy útiles en R para la generación de números aleatorios, runif y rnorm.
runif
La función runif
se utiliza para generar números aleatorios uniformemente distribuidos. Esto significa que cada número dentro del rango especificado tiene la misma probabilidad de ser seleccionado. La sintaxis básica de runif
es la siguiente:
runif(n, min = 0, max = 1)
Donde:
n
es el número de observaciones que quieres generar.min
ymax
son los límites inferior y superior del rango de números aleatorios. Por defecto, estos valores son 0 y 1, respectivamente.
Por ejemplo, si quieres generar 5 números aleatorios entre 0 y 10, usarías:
runif(5, min = 0, max = 10)
rnorm
Por otro lado, rnorm
se utiliza para generar números aleatorios que siguen una distribución normal (o gaussiana). La distribución normal está caracterizada por su media (el centro de la distribución) y su desviación estándar (que determina qué tan dispersos están los datos alrededor de la media). La sintaxis básica de rnorm
es:
rnorm(n, mean = 0, sd = 1)
Donde:
n
es el número de observaciones a generar.mean
es la media de la distribución normal.sd
es la desviación estándar de la distribución.
Por ejemplo, para generar 5 números aleatorios con una media de 50 y una desviación estándar de 10, usarías:
rnorm(5, mean = 50, sd = 10)
Usos en Simulaciones y Análisis de Datos
Tanto runif
como rnorm
son extremadamente útiles en estadísticas y ciencia de datos, especialmente para simulaciones. Por ejemplo, runif
puede ser usado para simular procesos que requieren una distribución uniforme, como la generación de números para loterías o para simular procesos de selección aleatoria.
rnorm
, por su parte, es crucial en situaciones donde la distribución normal es una suposición válida, lo cual es común en muchos fenómenos naturales y sociales. Se utiliza en la generación de datos de prueba, en el análisis de Monte Carlo, y en muchas otras áreas donde se modelan fenómenos que siguen una distribución normal.
En resumen, runif
y rnorm
son herramientas básicas pero poderosas en R para la generación de números aleatorios, cada una adecuada para diferentes tipos de distribuciones y aplicaciones.
Ejemplo Práctico con purrr
Vamos a crear algunas listas y aplicar funciones de purrr
:
library(purrr)
# Crear listas de ejemplo
lista1 <- list(rnorm(10), runif(10), rnorm(10, mean = 3))
lista2 <- list(rnorm(10), runif(10), rnorm(10, mean = 5))
# Calcular la media de cada conjunto de datos
medias <- map_dbl(lista1, mean)
Con map2()
y pmap()
, podemos operar sobre múltiples listas:
# Sumar elementos correspondientes de lista1 y lista2
sumas <- map2_dbl(lista1, lista2, ~ sum(.x + .y))
Finalmente, reduce()
nos permite combinar elementos de un vector:
# Suma acumulativa de un vector
vector <- 1:10
total <- reduce(vector, `+`)
Cómo has visto, forcats
y purrr
son herramientas poderosas en el arsenal de cualquier usuario de R. Mientras forcats
nos permite manejar datos categóricos de manera más eficiente, purrr
introduce un enfoque más elegante y potente para la programación funcional. Juntos, estos paquetes amplían nuestras capacidades para manipular y analizar datos en R, haciendo que nuestras tareas sean más simples y nuestro código más limpio.
En futuros artículos, continuaremos explorando más componentes de este poderoso paquete y cómo pueden ayudarnos en nuestro análisis de datos.