Este manual ejecutable representa el consolidado de la práctica de R de la asignatura de Análisis Masivo de Datos. Está diseñado para guiar a los estudiantes paso a paso en la realización de un análisis exploratorio de datos utilizando R. Trabajaremos con datos reales de la empresa Adventure Works, suministrados para la actividad 1 de la asignatura. Adventure Works vende bicicletas en el centro de Madrid. El objetivo es aplicar técnicas de análisis exploratorio para extraer información valiosa del conjunto de datos y demostrar las habilidades adquiridas durante el curso.”
Nota: Este es un documento RMarkdown ejecutable. Puedes ejecutar cada bloque de código haciendo clic en el botón “Run” (triángulo verde) en la esquina superior derecha de cada bloque, o presionando Ctrl+Shift+Enter cuando el cursor esté dentro del bloque.
Antes de comenzar con el análisis, es necesario instalar los paquetes requeridos. En R, los paquetes son colecciones de funciones, datos y código que extienden las capacidades básicas de R.
# ------------------------------------------------------
# INSTALAR PAQUETES (solo la primera vez en tu RStudio)
# ------------------------------------------------------
install.packages("readxl")
install.packages("ggplot2")
install.packages("dplyr")
install.packages("corrplot")
install.packages("tinytex")
install.packages("scales")
Importante: La instalación de paquetes solo se realiza una vez en tu RStudio. Una vez instalados, no es necesario volver a ejecutar estos comandos. Por eso, este bloque está configurado para no ejecutarse automáticamente (
eval=FALSE
).
Una vez instalados los paquetes, es necesario cargarlos en la sesión o el proyecto actual de R para poder utilizar sus funciones.
# ------------------------------------------------------
# CARGAR LIBRERÍAS (siempre al iniciar un script)
# ------------------------------------------------------
library(readxl)
library(ggplot2)
library(dplyr)
library(corrplot)
Nota: A diferencia de
install.packages()
,library()
debe ejecutarse cada vez que inicias una nueva sesión de R.
Para comenzar el análisis, necesitamos cargar los datos desde el archivo Excel.
# Cargar el archivo de datos; puedes realizarlo con esta instruccion ubicardo la ruta donde se encuentra el archivo en tu computador. o en la parte superior derecha de la pantalla R haciendo clic en Import DataSet
datos <- readxl::read_excel("/Users/leidypatriciarodriguezbernal/Desktop/proyectos R/datos_reg(1).xlsx")
# Mostrar las primeras filas del conjunto de datos
head(datos)
## # A tibble: 6 × 12
## Codigo BikeBuyer AvgMonthSpend Gender Age_Bin YearlyIncome Occupation
## <dbl> <dbl> <chr> <chr> <chr> <dbl> <chr>
## 1 1 1 50.97 M 26 to 29 81916 Clerical
## 2 2 1 53.11 M 30 to 50 81076 Clerical
## 3 3 1 54.08 F 30 to 50 86387 Clerical
## 4 4 1 56.93 M 30 to 50 61481 Skilled Manual
## 5 5 1 55.41 M 30 to 50 51804 Skilled Manual
## 6 6 1 49.31 F 30 to 50 61944 Skilled Manual
## # ℹ 5 more variables: MaritalStatus <chr>, NumberCarsOwned <dbl>, Age <dbl>,
## # NumberChildrenAtHome <dbl>, TotalChildren <dbl>
Explicación detallada:
readxl::read_excel()
: Esta notación indica que estamos usando la funciónread_excel()
del paquetereadxl
. El uso de::
es una forma explícita de indicar de qué paquete proviene la función.- El parámetro es la ruta al archivo Excel. Si estás ejecutando este código en tu computadora, deberás ajustar esta ruta según la ubicación del archivo en tu sistema.
datos <-
: Asigna el resultado (el conjunto de datos cargado) a un objeto llamado “datos”. Este objeto será un data frame, que es la estructura de datos principal para análisis en R.head(datos)
: Muestra las primeras 6 filas del conjunto de datos.
Personalización: - Si tu archivo tiene varias hojas, puedes especificar cuál quieres cargar con el parámetro
sheet
:r datos <- readxl::read_excel("/ruta/al/archivo.xlsx", sheet = "Nombre de la hoja")
Para entender la estructura de nuestros datos, utilizamos la función
str()
:
# La función str() significa "structure" (estructura)
# Muestra un resumen compacto de la estructura interna del objeto 'datos'
str(datos)
## tibble [14,685 × 12] (S3: tbl_df/tbl/data.frame)
## $ Codigo : num [1:14685] 1 2 3 4 5 6 7 8 9 10 ...
## $ BikeBuyer : num [1:14685] 1 1 1 1 1 1 0 1 0 0 ...
## $ AvgMonthSpend : chr [1:14685] "50.97" "53.11" "54.08" "56.93" ...
## $ Gender : chr [1:14685] "M" "M" "F" "M" ...
## $ Age_Bin : chr [1:14685] "26 to 29" "30 to 50" "30 to 50" "30 to 50" ...
## $ YearlyIncome : num [1:14685] 81916 81076 86387 61481 51804 ...
## $ Occupation : chr [1:14685] "Clerical" "Clerical" "Clerical" "Skilled Manual" ...
## $ MaritalStatus : chr [1:14685] "M" "M" "S" "M" ...
## $ NumberCarsOwned : num [1:14685] 3 2 3 2 1 2 1 1 1 1 ...
## $ Age : num [1:14685] 29 44 31 39 42 42 45 20 40 18 ...
## $ NumberChildrenAtHome: num [1:14685] 0 1 0 1 0 2 0 0 0 0 ...
## $ TotalChildren : num [1:14685] 1 2 0 2 0 2 0 0 0 0 ...
Explicación detallada:
str()
: Muestra la estructura interna de un objeto R.- Para un data frame, muestra:
- El tipo de objeto (data.frame)
- Número de observaciones (filas) y variables (columnas)
- Nombre de cada variable
- Tipo de dato de cada variable (numeric, character, factor, etc.)
- Primeros valores de cada variable como muestra
## [1] 14685 12
Explicación: - El primer número indica la cantidad de filas (observaciones) - El segundo número indica la cantidad de columnas (variables)
## [1] "Codigo" "BikeBuyer" "AvgMonthSpend"
## [4] "Gender" "Age_Bin" "YearlyIncome"
## [7] "Occupation" "MaritalStatus" "NumberCarsOwned"
## [10] "Age" "NumberChildrenAtHome" "TotalChildren"
Para obtener un resumen estadístico básico de nuestros datos:
# summary() es una función básica de R que sirve para hacer un resumen estadístico rápido
summary(datos)
## Codigo BikeBuyer AvgMonthSpend Gender
## Min. : 1 Min. :0.0000 Length:14685 Length:14685
## 1st Qu.: 3672 1st Qu.:0.0000 Class :character Class :character
## Median : 7343 Median :1.0000 Mode :character Mode :character
## Mean : 7343 Mean :0.5517
## 3rd Qu.:11014 3rd Qu.:1.0000
## Max. :14685 Max. :1.0000
## Age_Bin YearlyIncome Occupation MaritalStatus
## Length:14685 Min. : 25435 Length:14685 Length:14685
## Class :character 1st Qu.: 53311 Class :character Class :character
## Mode :character Median : 61887 Mode :character Mode :character
## Mean : 72898
## 3rd Qu.: 87499
## Max. :139115
## NumberCarsOwned Age NumberChildrenAtHome TotalChildren
## Min. :0.000 Min. :16.00 Min. :0.0000 Min. :0.0000
## 1st Qu.:1.000 1st Qu.:26.00 1st Qu.:0.0000 1st Qu.:0.0000
## Median :1.000 Median :33.00 Median :0.0000 Median :0.0000
## Mean :1.272 Mean :34.68 Mean :0.3382 Mean :0.8469
## 3rd Qu.:2.000 3rd Qu.:42.00 3rd Qu.:1.0000 3rd Qu.:2.0000
## Max. :5.000 Max. :85.00 Max. :3.0000 Max. :3.0000
Explicación detallada:
summary()
: Genera estadísticas descriptivas para cada variable en el data frame.- Para variables numéricas muestra:
Min.
: Valor mínimo1st Qu.
: Primer cuartil (25% de los datos están por debajo)Median
: Mediana (valor central)Mean
: Media (promedio)3rd Qu.
: Tercer cuartil (75% de los datos están por debajo)Max.
: Valor máximo- Para variables categóricas (character o factor) muestra:
- Frecuencia de los niveles más comunes
## [1] 0
## Codigo BikeBuyer AvgMonthSpend
## 0 0 0
## Gender Age_Bin YearlyIncome
## 0 0 0
## Occupation MaritalStatus NumberCarsOwned
## 0 0 0
## Age NumberChildrenAtHome TotalChildren
## 0 0 0
Interpretación: - Si el resultado es 0, no hay valores faltantes en el conjunto de datos - Si hay valores mayores que 0, indica cuántos valores faltantes hay en cada columna
Vamos a crear un gráfico circular para visualizar la distribución por género:
ggplot(datos, aes(x = "", fill = Gender)) +
geom_bar(position = "fill") +
coord_polar("y") + # Esto convierte la barra en un gráfico de torta
labs(title = "Distribución por género (porcentaje)")
Explicación del código:
ggplot()
: Función principal de ggplot2 para iniciar un gráfico.datos
: El data frame que contiene los datos.aes()
: Define las “estéticas” del gráfico, es decir, cómo se mapean las variables a elementos visuales.
x = ""
: Coloca todos los datos en una sola categoría en el eje x.fill = Gender
: Usa la variable Gender para determinar el color de relleno.geom_bar()
: Añade barras al gráfico.
position = "fill"
: Normaliza las alturas para que sumen 1, mostrando proporciones.coord_polar("y")
: Transforma las coordenadas cartesianas en polares, convirtiendo el gráfico de barras en un gráfico circular.labs()
: Añade etiquetas al gráfico.
Para cambiar los colores del gráfico, puedes añadir la función
scale_fill_manual()
:
ggplot(datos, aes(x = "", fill = Gender)) +
geom_bar(position = "fill") +
coord_polar("y") +
labs(title = "Distribución por género (porcentaje)") +
scale_fill_manual(values = c("M" = "blue", "F" = "pink"))
Opciones de colores:
- Nombres de colores: “red”, “blue”, “green”, etc.
- Códigos hexadecimales: “#FF0000” para rojo, “#0000FF” para azul, etc.
- Funciones de color como
rgb()
,hsv()
, etc.
Ahora, creemos un gráfico de barras que muestre la frecuencia por género con etiquetas numéricas:
ggplot(datos, aes(x = Gender, fill = Gender)) +
geom_bar() +
geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
labs(title = "Frecuencia por género", x = "Género", y = "Cantidad")
Explicación del código:
ggplot(datos, aes(x = Gender, fill = Gender))
: Inicia el gráfico con Gender en el eje x y también como variable de relleno.geom_bar()
: Añade barras al gráfico, por defecto cuenta la frecuencia de cada categoría.geom_text()
: Añade texto al gráfico.
stat = "count"
: Calcula el conteo para cada categoría.aes(label = ..count..)
: Usa el conteo calculado como etiqueta.vjust = -0.5
: Ajusta la posición vertical del texto, valores negativos lo mueven hacia arriba.labs()
: Añade etiquetas al gráfico.
ggplot(datos, aes(x = Gender, fill = Gender)) +
geom_bar() +
geom_text(stat = "count", aes(label = ..count..), vjust = -0.5, size = 5, fontface = "bold") +
labs(title = "Frecuencia por género", x = "Género", y = "Cantidad") +
scale_fill_manual(values = c("M" = "skyblue", "F" = "lightpink")) +
theme_minimal() +
theme(
plot.title = element_text(size = 16, face = "bold"),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10)
)
Parámetros adicionales:
size = 5
: Aumenta el tamaño del texto de las etiquetas.fontface = "bold"
: Hace que el texto de las etiquetas sea negrita.scale_fill_manual()
: Personaliza los colores de las barras.theme_minimal()
: Aplica un tema minimalista al gráfico.theme()
: Permite personalizar aspectos específicos del tema.
Veamos la distribución de ocupaciones:
ggplot(datos, aes(x = Occupation, fill = Occupation)) +
geom_bar() +
geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
labs(title = "Frecuencia por ocupación", x = "Ocupación", y = "Cantidad") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Nota: Rotamos las etiquetas del eje x para mejorar la legibilidad cuando hay muchas categorías.
Analicemos la distribución de compradores de bicicleta:
ggplot(datos, aes(x = factor(BikeBuyer))) +
geom_bar(aes(fill = factor(BikeBuyer))) +
geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
labs(title = "Frecuencia de compradores de bicicleta",
x = "Comprador (1 = Sí, 0 = No)",
y = "Cantidad") +
scale_fill_manual(values = c("0" = "red", "1" = "green"),
name = "Comprador",
labels = c("No", "Sí")) +
theme_minimal()
Explicación: - Convertimos BikeBuyer a factor para tratarlo como categórico, esto es super importante. - Usamos colores significativos: rojo para no compradores, verde para compradores - Personalizamos la leyenda para que sea más clara
Para analizar las relaciones entre variables numéricas, creamos una matriz de correlación:
library(dplyr)
library(corrplot)
# Seleccionar solo las columnas numéricas
datos_numericos <- datos %>% select_if(is.numeric) %>% select(-Codigo)
# Calcular la matriz de correlación
cor_matrix <- cor(datos_numericos, use = "complete.obs")
# Visualizar la matriz de correlación
corrplot(cor_matrix, method = "color", type = "upper", tl.col = "black")
Explicación del código: datos %>% select_if(is.numeric) %>% select(-Codigo): Selecciona solo las columnas numéricas y luego elimina la variable Codigo.
%>%: Es el operador pipe, que encadena operaciones.
select_if(is.numeric): Filtra solo las columnas que son numéricas.
select(-Codigo): Excluye explícitamente la columna Codigo, que aunque es numérica, no aporta a la interpretación analítica porque es un identificador único.
cor(datos_numericos, use = “complete.obs”): Calcula la matriz de correlación usando únicamente observaciones completas (sin valores faltantes).
corrplot(cor_matrix, method = “color”, type = “upper”, tl.col = “black”): Muestra visualmente la matriz de correlación.
method = “color”: Utiliza colores para representar los valores de correlación.
type = “upper”: Muestra solo el triángulo superior de la matriz, evitando duplicados.
tl.col = “black”: Establece el color negro para los nombres de las variables.
corrplot(cor_matrix,
method = "color", # Usa color para representar la fuerza
type = "full", # Muestra la matriz completa
tl.col = "black", # Color de los nombres de las variables
addCoef.col = "black", # Muestra los valores dentro de las celdas
number.cex = 0.7) # Tamaño del número
Explicación de los parámetros adicionales:
method = "color"
: Método de visualización. Alternativas: “circle”, “square”, “ellipse”, “number”, “shade”, “pie”.type = "full"
: Tipo de visualización de la matriz. Opciones:
"full"
: Matriz completa"upper"
: Solo la parte superior"lower"
: Solo la parte inferioraddCoef.col = "black"
: Añade los coeficientes de correlación en el color especificado.number.cex = 0.7
: Tamaño de los números (coeficientes). Valores menores a 1 reducen el tamaño.
corrplot(cor_matrix,
method = "circle", # Usa círculos en lugar de colores
type = "lower", # Muestra solo la parte inferior
tl.col = "darkblue", # Color azul oscuro para las etiquetas
tl.srt = 45, # Rota las etiquetas 45 grados
col = colorRampPalette(c("red", "white", "blue"))(100), # Paleta personalizada
addCoef.col = "black", # Color de los coeficientes
number.cex = 0.7, # Tamaño de los números
diag = FALSE) # No muestra la diagonal
Explicación de los parámetros adicionales:
method = "circle"
: Usa círculos cuyo tamaño representa la magnitud de la correlación.type = "lower"
: Muestra solo la parte inferior de la matriz.tl.srt = 45
: Rota las etiquetas de texto 45 grados.col = colorRampPalette(c("red", "white", "blue"))(100)
: Crea una paleta de colores personalizada.diag = FALSE
: No muestra la diagonal de la matriz (correlaciones de variables consigo mismas).
datos$AvgMonthSpend <- as.numeric(as.character(datos$AvgMonthSpend))
ggplot(datos, aes(x = AvgMonthSpend)) +
geom_histogram(binwidth = 10, fill = "skyblue", color = "black") +
labs(title = "Distribución del gasto mensual", x = "Gasto mensual", y = "Frecuencia")
Explicación del código:
ggplot(datos, aes(x = AvgMonthSpend))
: Inicia el gráfico con AvgMonthSpend en el eje x.geom_histogram()
: Añade un histograma al gráfico.
binwidth = 10
: Establece el ancho de cada barra (bin) en 10 unidades.fill = "skyblue"
: Color de relleno de las barras.color = "black"
: Color del borde de las barras.labs()
: Añade etiquetas al gráfico.
ggplot(datos, aes(x = AvgMonthSpend)) +
geom_histogram(binwidth = 5, fill = "lightgreen", color = "darkgreen", alpha = 0.7) +
geom_density(aes(y = 5 * ..count..), color = "red", size = 1) + # Añade curva de densidad
labs(title = "Distribución del gasto mensual",
subtitle = "Análisis de frecuencias con curva de densidad",
x = "Gasto mensual ($)",
y = "Frecuencia",
caption = "Fuente: Adventure Works") +
theme_minimal() +
theme(
plot.title = element_text(size = 16, face = "bold"),
plot.subtitle = element_text(size = 12, color = "darkgrey"),
axis.title = element_text(size = 12),
plot.caption = element_text(size = 8, color = "grey50")
)
Parámetros adicionales:
binwidth = 5
: Reduce el ancho de las barras para mostrar más detalle.fill = "lightgreen", color = "darkgreen"
: Cambia los colores.alpha = 0.7
: Añade transparencia (0 = transparente, 1 = opaco).geom_density()
: Añade una curva de densidad.
aes(y = 5 * ..count..)
: Escala la densidad para que coincida con el histograma.color = "red", size = 1
: Color y grosor de la línea.subtitle = "..."
: Añade un subtítulo.caption = "..."
: Añade una nota al pie del gráfico.- Personalización adicional del tema con
theme()
.
ggplot(datos, aes(y = AvgMonthSpend)) +
geom_boxplot(fill = "lightgreen") +
labs(title = "Distribución del gasto mensual", y = "Gasto mensual ($)")
Interpretación del diagrama de caja:
Un diagrama de caja muestra: - La mediana (línea central dentro de la caja) - El primer cuartil (Q1, borde inferior de la caja) - El tercer cuartil (Q3, borde superior de la caja) - El rango intercuartílico (IQR = Q3 - Q1, altura de la caja) - Los “bigotes” que se extienden hasta los valores mínimo y máximo dentro de 1.5*IQR - Los valores atípicos (puntos individuales más allá de los bigotes)
ggplot(datos, aes(y = AvgMonthSpend)) +
geom_boxplot(fill = "lightgreen", color = "darkgreen", outlier.color = "red", outlier.size = 3) +
labs(title = "Distribución del gasto mensual", y = "Gasto mensual ($)") +
theme_minimal()
Parámetros adicionales:
color = "darkgreen"
: Color del borde de la caja.outlier.color = "red"
: Color de los valores atípicos.outlier.size = 3
: Tamaño de los puntos que representan valores atípicos.
ggplot(datos, aes(x = YearlyIncome)) +
geom_histogram(binwidth = 5000, fill = "lightpink", color = "black") +
labs(title = "Distribución del ingreso anual", x = "Ingreso anual ($)", y = "Frecuencia")
ggplot(datos, aes(y = YearlyIncome)) +
geom_boxplot(fill = "orange") +
labs(title = "Distribución del ingreso anual", y = "Ingreso anual ($)")
Para comparar el gasto mensual entre géneros:
ggplot(datos, aes(x = Gender, y = AvgMonthSpend, fill = Gender)) +
geom_boxplot() +
labs(title = "Gasto mensual por género", x = "Género", y = "Gasto mensual ($)")
ggplot(datos, aes(x = Gender, y = AvgMonthSpend, fill = Gender)) +
geom_boxplot(outlier.color = "red", outlier.shape = 8, outlier.size = 3) +
stat_summary(fun = mean, geom = "point", shape = 23, size = 4, color = "black", fill = "white") +
labs(title = "Comparación del gasto mensual por género",
subtitle = "Los diamantes blancos representan las medias",
x = "Género",
y = "Gasto mensual ($)") +
scale_fill_manual(values = c("M" = "skyblue", "F" = "lightpink")) +
theme_minimal() +
theme(legend.position = "none")
Parámetros adicionales:
outlier.shape = 8
: Cambia la forma de los valores atípicos (8 = asterisco).stat_summary()
: Añade un resumen estadístico al gráfico.
fun = mean
: Calcula la media.geom = "point"
: Representa el resumen como puntos.shape = 23
: Forma de diamante.size = 4
: Tamaño del punto.color = "black", fill = "white"
: Colores del borde y relleno.theme(legend.position = "none")
: Elimina la leyenda.
ggplot(datos, aes(x = MaritalStatus, y = AvgMonthSpend, fill = MaritalStatus)) +
geom_boxplot() +
labs(title = "Gasto mensual por estado civil", x = "Estado civil", y = "Gasto mensual ($)")
ggplot(datos, aes(x = Gender, y = YearlyIncome, fill = Gender)) +
geom_boxplot() +
labs(title = "Ingreso anual por género", x = "Género", y = "Ingreso anual ($)")
ggplot(datos, aes(x = MaritalStatus, y = YearlyIncome, fill = MaritalStatus)) +
geom_boxplot() +
labs(title = "Ingreso anual por estado civil", x = "Estado civil", y = "Ingreso anual ($)")
library(ggplot2)
library(scales)
datos$AvgMonthSpend <- as.numeric(datos$AvgMonthSpend)
ggplot(datos, aes(x = YearlyIncome, y = AvgMonthSpend, color = factor(BikeBuyer))) +
geom_point(alpha = 0.6) +
labs(title = "Relación entre ingreso anual y gasto mensual por comprador",
x = "Ingreso anual ($)",
y = "Gasto mensual ($)",
color = "Comprador") +
scale_color_manual(values = c("0" = "red", "1" = "green"),
labels = c("No", "Sí")) +
scale_x_continuous(labels = comma) +
scale_y_continuous(labels = comma) +
theme_minimal()
Objetivo: Crear gráficos de barras personalizados para variables categóricas.
# Tu código aquí
ggplot(datos, aes(x = Occupation, fill = Occupation)) +
geom_bar() +
geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
labs(title = "Distribución de ocupaciones",
subtitle = "Análisis de frecuencias por ocupación",
x = "Ocupación",
y = "Cantidad de personas") +
scale_fill_brewer(palette = "Set3") + # Usa una paleta de colores predefinida
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
legend.position = "none")
Objetivo: Crear y personalizar una matriz de correlación.
corrplot()
usando:
type = "lower"
)# Tu código aquí
# Seleccionar variables numéricas
datos_num <- datos[, sapply(datos, is.numeric)]
# Calcular matriz de correlación
cor_mat <- cor(datos_num, use = "complete.obs")
# Visualizar con personalización
corrplot(cor_mat,
method = "circle",
type = "lower",
addCoef.col = "black",
number.cex = 0.7,
col = colorRampPalette(c("red", "white", "blue"))(100),
diag = FALSE,
tl.col = "black",
tl.srt = 45)
Objetivo: Analizar la distribución de variables numéricas con histogramas y diagramas de caja.
# Tu código aquí
# Histograma con línea de densidad
ggplot(datos, aes(x = YearlyIncome)) +
geom_histogram(aes(y = ..density..), binwidth = 5000,
fill = "lightblue", color = "darkblue", alpha = 0.7) +
geom_density(color = "red", size = 1) +
labs(title = "Distribución del ingreso anual",
subtitle = "Con curva de densidad",
x = "Ingreso anual ($)",
y = "Densidad") +
theme_minimal()
# Diagrama de caja
ggplot(datos, aes(y = YearlyIncome)) +
geom_boxplot(fill = "lightgreen", outlier.color = "red", outlier.size = 3) +
labs(title = "Diagrama de caja del ingreso anual",
y = "Ingreso anual ($)") +
theme_minimal()
Objetivo: Comparar una variable numérica entre diferentes grupos.
# Tu código aquí
ggplot(datos, aes(x = MaritalStatus, y = YearlyIncome, fill = MaritalStatus)) +
geom_boxplot(outlier.color = "red", outlier.shape = 8, outlier.size = 2) +
stat_summary(fun = mean, geom = "point", shape = 23,
size = 4, color = "black", fill = "white") +
labs(title = "Comparación del ingreso anual por estado civil",
subtitle = "Los diamantes representan las medias",
x = "Estado civil",
y = "Ingreso anual ($)") +
scale_fill_brewer(palette = "Pastel1") +
theme_minimal() +
theme(legend.position = "none")
Problema: Al intentar crear un gráfico con ggplot, aparece el error “objeto ‘ggplot’ no encontrado”.
Solución: Este error ocurre cuando no has cargado la
librería ggplot2. Asegúrate de ejecutar library(ggplot2)
antes de usar funciones de este paquete.
Problema: Al intentar cargar el archivo Excel, aparece un error indicando que no se puede abrir el archivo.
Solución: Verifica que la ruta al archivo sea
correcta. R utiliza barras diagonales (/) en lugar de barras invertidas
() para las rutas, incluso en Windows. También puedes usar la función
file.choose()
para seleccionar el archivo
interactivamente.
Problema: Al intentar calcular la matriz de correlación, aparece un error indicando que no se puede calcular con datos no numéricos.
Solución: La función cor()
solo
funciona con variables numéricas. Asegúrate de seleccionar solo las
columnas numéricas del data frame.
Problema: Al crear un gráfico, aparece un error sobre valores NA en aes().
Solución: Este error ocurre cuando hay valores NA en las variables que estás usando para el gráfico. Puedes eliminar las filas con NA o filtrarlas específicamente.
Problema: Al intentar convertir una variable a
numérica con as.numeric()
, los valores se convierten
incorrectamente o aparecen como NA.
Solución: Si la variable contiene caracteres no
numéricos (como “$” o “,”), debes limpiarla primero con
gsub()
.
Opciones de personalización de colores:
fill = "color"
o
scale_fill_manual(values = c("categoría1" = "color1", "categoría2" = "color2"))
color = "color"
alpha = valor
(entre 0 y 1)scale_fill_brewer(palette = "Set1")
o
scale_color_brewer(palette = "Set1")
Opciones de personalización de tamaños:
size = valor
size = valor
o
theme(element = element_text(size = valor))
binwidth = valor
Opciones de personalización de texto:
labs(title = "texto")
labs(subtitle = "texto")
labs(x = "texto", y = "texto")
labs(caption = "texto")
theme(element = element_text(size = valor, face = "bold"/"italic", color = "color"))
Opciones de personalización de matrices de correlación:
type = "upper"
type = "lower"
type = "full"
addCoef.col = "color"
number.cex = valor
method = "color"/"circle"/"square"/"ellipse"/"number"/"shade"/"pie"
col = colorRampPalette(c("color1", "color2", "color3"))(número_de_colores)
Este documento ha cubierto los aspectos fundamentales del análisis exploratorio de datos con R, enfocándose en:
Para continuar profundizando en el análisis, se recomienda: