## 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
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.
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.
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/.
| 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 |
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.
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.
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.
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
# 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
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.