Este es un documento R Markdown que demuestra cómo combinar texto, código y resultados en un solo archivo.
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")
Vamos a cargar algunos datos y realizar un análisis básico.
## [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)
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 ...
## [1] 32 11
## [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
## [11] "carb"
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.
# --- 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
# --- 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
# --- 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
# --- 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
)
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 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
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 |
Puedes incluir código R dentro del texto usando la sintaxis
`r`
.
Por ejemplo:
# --- 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)
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} \]
R Markdown es una herramienta versátil que permite:
output: html_document
a
output: pdf_document
output: ioslides_presentation
o
output: slidy_presentation
flexdashboard
blogdown
o
bookdown
¡Feliz análisis con R Markdown! 📊📈