Introducción

Este es un documento R Markdown que demuestra cómo combinar texto, código y resultados en un solo archivo.

¿Por qué usar R Markdown?

  • Reproducibilidad de análisis
  • Documentación automática
  • Múltiples formatos de salida
  • Integración perfecta entre código y narrativa

Instalación de Paquetes Necesarios

Antes de comenzar, asegúrate de tener instalados los paquetes necesarios. Ejecuta este código una sola vez en tu consola de R (no es necesario incluirlo en el documento final):

# --- INSTALACIÓN DE PAQUETES ---
# Estos comandos instalan los paquetes necesarios (ejecutar solo una vez)

# Paquete para crear documentos R Markdown
install.packages("rmarkdown")

# Motor para procesar y ejecutar código R en documentos
install.packages("knitr")

# Gramática de gráficos para visualizaciones
install.packages("ggplot2")

# Herramientas para manipulación de datos
install.packages("dplyr")

# Tablas con formato mejorado
install.packages("kableExtra")

# Para trabajar con fechas
install.packages("lubridate")

Trabajando con Datos

Vamos a cargar algunos datos y realizar un análisis básico.

print("Hola mundo")
## [1] "Hola mundo"

Continuo con mi analisis…

# --- CARGA DE LIBRERÍAS ---
# Estas librerías deben estar instaladas previamente

# Cargar ggplot2: sistema de visualización de datos basado en la gramática de gráficos
library(ggplot2)

# Cargar dplyr: herramientas para manipulación de datos (filter, select, mutate, etc.)
library(dplyr)

# Cargar knitr: motor para tejer código R con texto
library(knitr)

# Cargar kableExtra: mejora el formato de tablas
library(kableExtra)

Análisis Exploratorio

Usaremos el dataset mtcars incluido en R:

# --- EXPLORACIÓN INICIAL DE DATOS ---

# Mostrar las primeras 6 filas del dataset mtcars
# mtcars es un dataset integrado que contiene datos de 32 automóviles
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
# Generar resumen estadístico de todas las variables
# Muestra mínimo, cuartiles, mediana, media y máximo
summary(mtcars)
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec             vs        
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        am              gear            carb      
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000
# --- ESTRUCTURA DEL DATASET ---

# Ver la estructura del dataset: tipos de datos y primeros valores
str(mtcars)
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
# Obtener las dimensiones: número de filas y columnas
dim(mtcars)
## [1] 32 11
# Listar los nombres de todas las columnas
names(mtcars)
##  [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear"
## [11] "carb"

Estadísticas Descriptivas

Calculemos algunas estadísticas básicas:

# --- CÁLCULOS ESTADÍSTICOS ---

# Calcular la media (promedio) de millas por galón
media_mpg <- mean(mtcars$mpg)

# Mostrar resultado con formato (2 decimales)
paste("La media de MPG es:", round(media_mpg, 2))
## [1] "La media de MPG es: 20.09"
# Calcular la desviación estándar de MPG
desviacion_mpg <- sd(mtcars$mpg)
paste("La desviación estándar de MPG es:", round(desviacion_mpg, 2))
## [1] "La desviación estándar de MPG es: 6.03"
# Calcular la correlación entre peso (wt) y millas por galón (mpg)
# Valores cercanos a -1 indican correlación negativa fuerte
correlacion <- cor(mtcars$mpg, mtcars$wt)
paste("Correlación MPG-Peso:", round(correlacion, 3))
## [1] "Correlación MPG-Peso: -0.868"

La correlación entre el peso (wt) y las millas por galón (mpg) es de -0.868, lo que indica que a mayor peso, menor rendimiento de combustible.

# --- ESTADÍSTICAS AGRUPADAS ---

# Usar dplyr para calcular estadísticas por número de cilindros
# %>% es el operador pipe: pasa el resultado al siguiente comando

estadisticas_cyl <- mtcars %>%
  group_by(cyl) %>%              # Agrupar datos por número de cilindros
  summarise(                      # Calcular resúmenes para cada grupo
    n_autos = n(),               # Contar número de autos
    mpg_medio = mean(mpg),       # Promedio de millas por galón
    mpg_sd = sd(mpg),            # Desviación estándar de MPG
    peso_medio = mean(wt),       # Peso promedio
    hp_medio = mean(hp)          # Caballos de fuerza promedio
  )

# Mostrar la tabla de resultados
print(estadisticas_cyl)
## # A tibble: 3 × 6
##     cyl n_autos mpg_medio mpg_sd peso_medio hp_medio
##   <dbl>   <int>     <dbl>  <dbl>      <dbl>    <dbl>
## 1     4      11      26.7   4.51       2.29     82.6
## 2     6       7      19.7   1.45       3.12    122. 
## 3     8      14      15.1   2.56       4.00    209.

Visualizaciones

Gráfico de Dispersión

# --- GRÁFICO DE DISPERSIÓN CON REGRESIÓN ---

# Crear gráfico base usando ggplot2
ggplot(mtcars, aes(x = wt, y = mpg)) +
  
  # Agregar puntos de dispersión
  # color según cilindros, tamaño fijo de 3
  geom_point(aes(color = factor(cyl)), size = 3, alpha = 0.7) +
  
  # Agregar línea de regresión lineal
  # method="lm" especifica modelo lineal
  # se=TRUE muestra intervalo de confianza
  geom_smooth(method = "lm", se = TRUE, color = "blue", linewidth = 1) +
  
  # Personalizar etiquetas
  labs(
    title = "Relación entre Peso y Millas por Galón",
    subtitle = "Dataset mtcars: 32 automóviles (1973-74)",
    x = "Peso (1000 lbs)",
    y = "Millas por Galón",
    color = "Cilindros"
  ) +
  
  # Aplicar tema minimalista
  theme_minimal() +
  
  # Personalización adicional del tema
  theme(
    plot.title = element_text(face = "bold", size = 14),
    legend.position = "right"
  )
Relación entre Peso y Consumo de Combustible

Relación entre Peso y Consumo de Combustible

Histograma

# --- HISTOGRAMA DE FRECUENCIAS ---

# Crear histograma para visualizar distribución de MPG
ggplot(mtcars, aes(x = mpg)) +
  
  # Definir barras del histograma
  # bins=10 divide los datos en 10 intervalos
  geom_histogram(bins = 10, fill = "steelblue", color = "white", alpha = 0.8) +
  
  # Agregar línea de densidad suavizada
  geom_density(aes(y = after_stat(count)), color = "red", linewidth = 1) +
  
  # Etiquetas del gráfico
  labs(
    title = "Distribución de Millas por Galón",
    x = "Millas por Galón",
    y = "Frecuencia"
  ) +
  
  # Aplicar tema minimalista
  theme_minimal()
Distribución de Millas por Galón

Distribución de Millas por Galón

Gráfico de Cajas (Boxplot)

# --- GRÁFICO DE CAJAS ---

# Convertir cilindros a factor para mejor visualización
mtcars$cyl_factor <- factor(mtcars$cyl)

# Crear boxplot para comparar distribuciones
ggplot(mtcars, aes(x = cyl_factor, y = mpg, fill = cyl_factor)) +
  
  # Agregar cajas con cuartiles
  geom_boxplot(alpha = 0.7, outlier.color = "red", outlier.size = 2) +
  
  # Agregar puntos individuales con jitter (dispersión)
  geom_jitter(width = 0.2, alpha = 0.3, size = 2) +
  
  # Etiquetas
  labs(
    title = "Consumo de Combustible por Número de Cilindros",
    x = "Número de Cilindros",
    y = "Millas por Galón",
    fill = "Cilindros"
  ) +
  
  # Tema y colores
  theme_minimal() +
  scale_fill_brewer(palette = "Set2")
Comparación de MPG por Número de Cilindros

Comparación de MPG por Número de Cilindros

Tablas Formateadas

Tabla Básica con kable()

# --- TABLA CON FORMATO BÁSICO ---

# Usar dplyr para crear resumen por cilindros
tabla_resumen <- mtcars %>%
  group_by(cyl) %>%                    # Agrupar por número de cilindros
  summarise(                           # Calcular estadísticas
    N = n(),                           # Número de observaciones
    MPG_promedio = mean(mpg),          # Media de MPG
    MPG_min = min(mpg),                # Valor mínimo de MPG
    MPG_max = max(mpg),                # Valor máximo de MPG
    HP_promedio = mean(hp),            # Media de caballos de fuerza
    Peso_promedio = mean(wt)           # Media de peso
  )

# Crear tabla formateada con kable
kable(
  tabla_resumen,
  digits = 2,                          # Redondear a 2 decimales
  caption = "Estadísticas por Número de Cilindros",
  col.names = c("Cilindros", "N", "MPG Prom.", "MPG Min", "MPG Max", "HP Prom.", "Peso Prom."),
  align = c('c', 'c', 'c', 'c', 'c', 'c', 'c')  # Alinear columnas al centro
)
Estadísticas por Número de Cilindros
Cilindros N MPG Prom. MPG Min MPG Max HP Prom. Peso Prom.
4 11 26.66 21.4 33.9 82.64 2.29
6 7 19.74 17.8 21.4 122.29 3.12
8 14 15.10 10.4 19.2 209.21 4.00

Tabla Avanzada con kableExtra

# --- TABLA CON FORMATO AVANZADO ---

# Crear y formatear tabla con estilos adicionales
mtcars %>%
  select(mpg, cyl, hp, wt) %>%         # Seleccionar columnas específicas
  head(10) %>%                         # Tomar primeras 10 filas
  kable(
    digits = 2,
    caption = "Primeros 10 Automóviles del Dataset",
    col.names = c("MPG", "Cilindros", "HP", "Peso")
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),  # Estilos Bootstrap
    full_width = FALSE,                # No ocupar todo el ancho
    position = "center"                # Centrar tabla
  ) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#3498db")  # Estilo del encabezado
Primeros 10 Automóviles del Dataset
MPG Cilindros HP Peso
Mazda RX4 21.0 6 110 2.62
Mazda RX4 Wag 21.0 6 110 2.88
Datsun 710 22.8 4 93 2.32
Hornet 4 Drive 21.4 6 110 3.21
Hornet Sportabout 18.7 8 175 3.44
Valiant 18.1 6 105 3.46
Duster 360 14.3 8 245 3.57
Merc 240D 24.4 4 62 3.19
Merc 230 22.8 4 95 3.15
Merc 280 19.2 6 123 3.44

Código en Línea

Puedes incluir código R dentro del texto usando la sintaxis `r`.

Por ejemplo:

  • El dataset tiene 32 observaciones y 12 variables.
  • El automóvil más eficiente tiene 33.9 MPG.
  • El automóvil menos eficiente tiene 10.4 MPG.
  • El peso promedio de los automóviles es 3.22 miles de libras.

Opciones de Chunks Útiles

# --- OPCIONES COMUNES DE CHUNKS ---

# eval = FALSE: no ejecuta el código, solo lo muestra (útil para ejemplos)
# echo = FALSE: ejecuta el código pero no lo muestra (solo muestra resultados)
# include = FALSE: ejecuta pero no muestra nada (útil para configuración)
# warning = FALSE: oculta advertencias de R
# message = FALSE: oculta mensajes (como los de carga de paquetes)
# error = FALSE: oculta mensajes de error
# fig.width = 8: ancho de figura en pulgadas
# fig.height = 5: alto de figura en pulgadas
# fig.cap = "Título": añade título a la figura
# cache = TRUE: guarda resultados para no recalcular en siguientes ejecuciones
# results = 'hide': ejecuta pero oculta resultados
# results = 'asis': imprime resultados tal como vienen (útil para HTML/LaTeX)

Fórmulas Matemáticas

R Markdown soporta LaTeX para escribir fórmulas matemáticas:

Fórmula en línea: La media se calcula como \(\bar{x} = \frac{1}{n}\sum_{i=1}^{n}x_i\)

Fórmula centrada: \[ s = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(x_i - \bar{x})^2} \]

Conclusiones

R Markdown es una herramienta versátil que permite:

  1. Documentar tu análisis paso a paso con comentarios claros
  2. Reproducir resultados fácilmente ejecutando el documento completo
  3. Compartir trabajo de forma profesional en múltiples formatos
  4. Actualizar reportes automáticamente cuando cambien los datos

Próximos Pasos

  • Exportar a PDF: cambia output: html_document a output: pdf_document
  • Crear presentaciones: usa output: ioslides_presentation o output: slidy_presentation
  • Hacer dashboards: usa el paquete flexdashboard
  • Crear sitios web: usa blogdown o bookdown

Recursos Adicionales

¡Feliz análisis con R Markdown! 📊📈