## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

Introducción

El presente análisis tiene como objetivo explorar el conjunto de datos starwars del paquete dplyr, el cual contiene información variada sobre los personajes de la saga Star Wars.
A través de un análisis exploratorio y la generación de gráficos descriptivos, se busca comprender mejor las características físicas, sociales y de participación de los personajes en el universo de Star Wars, identificando patrones, tendencias y valores atípicos interesantes.

Objetivos del estudio

Descripción de los datos

El conjunto de datos starwars proviene del paquete dplyr y contiene información detallada acerca de varios personajes de la saga cinematográfica Star Wars. Cada fila representa un personaje único y registra una serie de atributos asociados a dicho personaje, como su nombre, altura, masa corporal, color de cabello, color de piel, color de ojos, año de nacimiento, sexo, género, planeta natal, especie, así como una lista de vehículos y naves espaciales que ha utilizado. Además, su temática popular hace que el análisis sea accesible e interesante para desrpertar interes en el analisis de datos a todas las edades que sean seguidores de esta tan reconocida saga.

Descripción de la fuente de datos:

El conjunto de datos starwars proviene del paquete dplyr, uno de los principales componentes del ecosistema tidyverse en R.
dplyr fue desarrollado principalmente por Hadley Wickham y su equipo en RStudio (actualmente Posit) con el objetivo de facilitar la manipulación de datos de manera más intuitiva, rápida y eficiente, especialmente enfocándose en tareas comunes como filtrar, seleccionar, ordenar, mutar y resumir datasets.

Este conjunto de datos fue creado con fines educativos y de demostración, buscando proporcionar un material interesante y accesible para practicar funciones de manipulación y análisis de datos. La elección de un tema tan popular como Star Wars ayuda a despertar el interés y la motivación en personas de diversas edades y niveles de experiencia.

En este proyecto en particular, se hace uso de las siguientes librerías: - dplyr: para cargar el dataset y realizar operaciones de exploración y resumen de datos. - base (funciones nativas de R): para realizar funciones como summary(), cat(), y manejo general de los datos.

Toda la información del dataset fue estructurada manualmente para fines didácticos, y no se requiere procesamiento adicional antes de su análisis. No existe una fuente académica específica para citar este dataset, pero se recomienda revisar la documentación oficial del paquete dplyr disponible en https://dplyr.tidyverse.org/.

Tabla resumen de variables

Variable Descripción Numérica Categórica
name Nombre del personaje x
height Altura del personaje en centímetros x
mass Masa del personaje en kilogramos x
hair_color Color de cabello x
skin_color Color de piel x
eye_color Color de ojos x
birth_year Año de nacimiento respecto a la Batalla de Yavin x
sex Sexo biológico del personaje x
gender Género del personaje x
homeworld Mundo natal x
species Especie del personaje x
films Lista de películas en las que aparece el personaje x
vehicles Lista de vehículos que el personaje ha conducido x
starships Lista de naves espaciales que el personaje ha piloteado x

Inspección de los datos

Dimensiones del dataset

cat("Número de filas (observaciones):", nrow(starwars), "\n")
## Número de filas (observaciones): 87
cat("Número de columnas (variables):", ncol(starwars), "\n")
## Número de columnas (variables): 14
cat("Nombres de las variables:\n")
## Nombres de las variables:
glimpse(starwars)
## Rows: 87
## Columns: 14
## $ name       <chr> "Luke Skywalker", "C-3PO", "R2-D2", "Darth Vader", "Leia Or…
## $ height     <int> 172, 167, 96, 202, 150, 178, 165, 97, 183, 182, 188, 180, 2…
## $ mass       <dbl> 77.0, 75.0, 32.0, 136.0, 49.0, 120.0, 75.0, 32.0, 84.0, 77.…
## $ hair_color <chr> "blond", NA, NA, "none", "brown", "brown, grey", "brown", N…
## $ skin_color <chr> "fair", "gold", "white, blue", "white", "light", "light", "…
## $ eye_color  <chr> "blue", "yellow", "red", "yellow", "brown", "blue", "blue",…
## $ birth_year <dbl> 19.0, 112.0, 33.0, 41.9, 19.0, 52.0, 47.0, NA, 24.0, 57.0, …
## $ sex        <chr> "male", "none", "none", "male", "female", "male", "female",…
## $ gender     <chr> "masculine", "masculine", "masculine", "masculine", "femini…
## $ homeworld  <chr> "Tatooine", "Tatooine", "Naboo", "Tatooine", "Alderaan", "T…
## $ species    <chr> "Human", "Droid", "Droid", "Human", "Human", "Human", "Huma…
## $ films      <list> <"A New Hope", "The Empire Strikes Back", "Return of the J…
## $ vehicles   <list> <"Snowspeeder", "Imperial Speeder Bike">, <>, <>, <>, "Imp…
## $ starships  <list> <"X-wing", "Imperial shuttle">, <>, <>, "TIE Advanced x1",…

El dataset contiene 88 observaciones y 14 variables. Esto significa que hay 88 personajes registrados y 14 características diferentes descritas para cada uno de ellos.


Resumen de variables numéricas

summary(select(starwars, where(is.numeric)))
##      height           mass           birth_year    
##  Min.   : 66.0   Min.   :  15.00   Min.   :  8.00  
##  1st Qu.:167.0   1st Qu.:  55.60   1st Qu.: 35.00  
##  Median :180.0   Median :  79.00   Median : 52.00  
##  Mean   :174.6   Mean   :  97.31   Mean   : 87.57  
##  3rd Qu.:191.0   3rd Qu.:  84.50   3rd Qu.: 72.00  
##  Max.   :264.0   Max.   :1358.00   Max.   :896.00  
##  NA's   :6       NA's   :28        NA's   :44

Se observan las variables numéricas: height, mass y birth_year.

  • height tiene valores que van desde aproximadamente 66 cm hasta 264 cm.
  • mass muestra pesos desde 15 kg hasta 1358 kg, aunque hay valores atípicos.
  • birth_year cubre una amplia gama, incluyendo personajes con nacimiento hace muchos años antes de la Batalla de Yavin.

Gracias a la función summary() del paquete base de R, se pueden observar medidas descriptivas importantes como:

Min. y Max., que muestran el valor mínimo y máximo observado en cada variable.

1st Qu. (primer cuartil), que indica que el 25% de los personajes tienen valores menores o iguales a ese umbral.

Median, que señala el punto central de la distribución, dividiendo los datos en dos mitades iguales.

Mean (promedio), que da una idea general de la tendencia central.

3rd Qu. (tercer cuartil), donde el 75% de los datos están por debajo de ese valor.

Estos indicadores permiten comprender cómo se distribuyen las alturas, masas y años de nacimiento entre los personajes del universo Star Wars, detectando tendencias generales en el conjunto de datos.


Valores faltantes

colSums(is.na(starwars))
##       name     height       mass hair_color skin_color  eye_color birth_year 
##          0          6         28          5          0          0         44 
##        sex     gender  homeworld    species      films   vehicles  starships 
##          4          4         10          4          0          0          0

Existen valores faltantes (NA) en varias columnas, principalmente en mass, hair_color, birth_year, sex, gender, homeworld, species, films, vehicles, y starships.
Esto se debe probablemente a que no toda la información está disponible en los distintos databooks publicados por Lucasfilms y Disney para rellenar las historias de las peliculas.

Primer gráfico: Dispersión entre altura y masa

library(ggplot2)

# Gráfico de dispersión
ggplot(starwars, aes(x = height, y = mass)) +
  geom_point(color = "steelblue", size = 3) +
  labs(
    title = "Relación entre altura y masa de los personajes de Star Wars",
    x = "Altura (cm)",
    y = "Masa (kg)"
  ) +
  theme_minimal()
## Warning: Removed 28 rows containing missing values or values outside the scale range
## (`geom_point()`).

En este gráfico de dispersión observamos la relación entre la altura y la masa de los personajes. Como era de esperarse, existe una ligera tendencia general donde los personajes más altos tienden a tener mayor masa corporal.
Sin embargo, se presentan varios valores atípicos: por ejemplo, el que tiene la mayor masa pero no la esta dentro de los mas altos en cuanto a estatura de personajes o muy ligeros a pesar de su altura o personajes de baja estatura con gran masa, lo cual refleja la diversidad de especies en la galaxia de Star Wars.
Es posible que individuos como Yoda (baja estatura) o Chewbacca (gran masa y altura) contribuyan a estos patrones extremos.
Estos datos capturan la heterogeneidad biológica presente en este universo de ficción.

# Buscar el personaje con mayor masa
starwars %>%
  filter(!is.na(mass)) %>%
  arrange(desc(mass)) %>%
  select(name, height, mass) %>%
  head(1)
## # A tibble: 1 × 3
##   name                  height  mass
##   <chr>                  <int> <dbl>
## 1 Jabba Desilijic Tiure    175  1358
# Buscar Yoda y Chewbacca en starwars
starwars %>%
  filter(name %in% c("Yoda", "Chewbacca")) %>%
  select(name, height, mass)
## # A tibble: 2 × 3
##   name      height  mass
##   <chr>      <int> <dbl>
## 1 Chewbacca    228   112
## 2 Yoda          66    17

Segundo gráfico: Histograma del número de naves espaciales piloteadas

# Crear columna auxiliar: número de starships piloteadas
starwars <- starwars %>%
  mutate(num_starships = lengths(starships))

# Histograma
ggplot(starwars, aes(x = num_starships)) +
  geom_histogram(binwidth = 1, fill = "darkorange", color = "black") +
  labs(
    title = "Distribución del número de naves piloteadas por personaje",
    x = "Número de naves",
    y = "Cantidad de personajes"
  ) +
  theme_minimal()

Este histograma muestra la cantidad de naves espaciales que cada personaje ha piloteado.
Se observa que la mayoría de los personajes no ha piloteado ninguna nave (valor de 0), lo cual es lógico, considerando que muchos son civiles, políticos o criaturas que no participan en batallas.
Sin embargo, existen personajes que destacan pilotando varias naves, como Han Solo y Anakin Skywalker, conocidos por su habilidad en el pilotaje en las películas.
La distribución está fuertemente sesgada hacia la izquierda, reflejando que solo una pequeña élite de personajes posee gran experiencia como pilotos.

# Contar cuántas starships tienen Han Solo y Anakin Skywalker
starwars %>%
  filter(name %in% c("Han Solo", "Anakin Skywalker")) %>%
  mutate(num_starships = lengths(starships)) %>%
  select(name, num_starships)
## # A tibble: 2 × 2
##   name             num_starships
##   <chr>                    <int>
## 1 Anakin Skywalker             3
## 2 Han Solo                     2

Tercer gráfico: Barras del número de películas por personaje

# Crear columna auxiliar: número de películas
starwars <- starwars %>%
  mutate(num_films = lengths(films))

# Gráfico de barras
ggplot(starwars, aes(x = reorder(name, -num_films), y = num_films)) +
  geom_bar(stat = "identity", fill = "seagreen") +
  labs(
    title = "Número de películas en las que aparece cada personaje",
    x = "Personaje",
    y = "Número de películas"
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

Este gráfico de barras ordena a los personajes según la cantidad de películas en las que han aparecido.
Los protagonistas principales como Luke Skywalker, Leia Organa, Darth Vader y C-3PO dominan el número de apariciones, mostrando su importancia central en la narrativa de la saga.
Es interesante observar que algunos droides, como R2-D2 y C-3PO, están entre los personajes con más participaciones, destacando su rol crucial a lo largo de toda la línea temporal de Star Wars.
La gráfica también resalta cómo algunos personajes icónicos pueden tener gran peso en la saga a pesar de aparecer en relativamente pocas películas.

# Número de películas para personajes principales
starwars %>%
  filter(name %in% c("Luke Skywalker", "Leia Organa", "Darth Vader", "C-3PO", "R2-D2")) %>%
  mutate(num_films = lengths(films)) %>%
  select(name, num_films)
## # A tibble: 5 × 2
##   name           num_films
##   <chr>              <int>
## 1 Luke Skywalker         5
## 2 C-3PO                  6
## 3 R2-D2                  7
## 4 Darth Vader            4
## 5 Leia Organa            5

Conclusión

El análisis del conjunto de datos starwars ha permitido obtener una visión general de las características físicas y participativas de los personajes en la saga cinematográfica.
Se identificaron patrones coherentes, como la relación entre altura y masa, y la concentración de personajes que no pilotan naves. Asimismo, se resaltó la relevancia de personajes icónicos a través de su número de apariciones en películas.
Este proyecto no solo facilita la comprensión de técnicas básicas de análisis de datos en R, sino que también demuestra cómo datasets temáticos pueden hacer el aprendizaje más atractivo y contextualizado.