Inicio › Foros › Etapa I – Raíces Profundas › 6. Tips de Data wrangling. Manipulación de data frames › Respuesta a: 6. Tips de Data wrangling. Manipulación de data frames
JordiHola Roberto,
Gracias por escribirme y por reenviarme tanto el ejercicio como el código. ¡Espero que hayas tenido buen regreso desde tu trabajo fuera!
He revisado tu archivo .R y la hoja de trabajo que adjuntaste. Estás muy cerca de lograrlo. El principal problema venía de la línea donde se lee el archivo CSV. Estabas usando la función read.csv2() con separador ",", lo que no es compatible: read.csv2() espera el separador ;.
### ✅ Corrección:
Debes usar simplemente read.csv(), que sí entiende el formato que tiene el archivo descargado de Kaggle. Es decir, cambia esta línea:
`r
data <- read.csv2(file = "world-happiness-report-2021.csv", header = TRUE, sep =",")
`
Por esta:
`r
data <- read.csv("world-happiness-report-2021.csv", header = TRUE)
`
—
Además, para ayudarte a completar toda la hoja de trabajo, te dejo a continuación un script completo corregido y comentado paso a paso. Puedes copiarlo directamente en tu RStudio y ejecutarlo. Solo asegúrate de tener el archivo world-happiness-report-2021.csv en la misma carpeta donde guardes este script:
—
### 📌 Código completo corregido para la hoja de trabajo
`r
# Cargar librerías necesarias
library(dplyr)
library(tidyr)
library(ggplot2)
library(plotly)
library(hrbrthemes)
library(GGally)
library(ggpubr)
library(dlookr)
library(caret)
# Definir el directorio del script (solo funciona bien en RStudio)
directory <- gsub("/", "/", dirname(rstudioapi::getSourceEditorContext()$path), fixed=TRUE)
setwd(directory)
# Paso 1: Lectura de datos
# ⚠️ IMPORTANTE: usamos read.csv en lugar de read.csv2
data <- read.csv("world-happiness-report-2021.csv", header = TRUE)
# Revisar estructura y primeras filas
str(data)
head(data)
# Paso 2: Limpieza y transformación de tipos
# Convertir variables a numéricas o factores si hace falta
data$Regional.indicator <- as.factor(data$Regional.indicator)
data$Country.name <- as.factor(data$Country.name)
# Ver tipos y valores faltantes
plot(dlookr::overview(data))
# Paso 3: Manipulación de data frames
# 1. Cuenta el número de países por Regional indicator
data %>%
count(Regional.indicator)
# 2. Promedio de Logged GDP y Healthy life expectancy por región
data %>%
group_by(Regional.indicator) %>%
summarise(
mean_GDP = mean(Logged.GDP.per.capita, na.rm = TRUE),
mean_life = mean(Healthy.life.expectancy, na.rm = TRUE)
)
# 3. Promedio de todas las variables numéricas por región
data %>%
group_by(Regional.indicator) %>%
summarise_if(is.numeric, mean, na.rm = TRUE)
# 4. En Western Europe, los 10 países con más Perceptions of corruption
data %>%
filter(Regional.indicator == «Western Europe») %>%
arrange(desc(Perceptions.of.corruption)) %>%
select(Country.name, Perceptions.of.corruption) %>%
slice_head(n = 10)
# 5. País con más Freedom to make life choices por región
data %>%
group_by(Regional.indicator) %>%
filter(Freedom.to.make.life.choices == max(Freedom.to.make.life.choices, na.rm = TRUE)) %>%
select(Regional.indicator, Country.name, Freedom.to.make.life.choices)
# 6. Para países con Logged GDP < 10, promedio de Ladder score por región
data %>%
filter(Logged.GDP.per.capita < 10) %>%
group_by(Regional.indicator) %>%
summarise(mean_ladder = mean(Ladder.score, na.rm = TRUE))
# 7. Crear variable LADDER_6 (SI si >6, NO si <=6)
data <- data %>%
mutate(LADDER_6 = ifelse(Ladder.score > 6, «SI», «NO»))
# 8. Número de países en cada grupo LADDER_6
data %>%
count(LADDER_6)
# 9. Países por región en cada grupo LADDER_6
data %>%
count(Regional.indicator, LADDER_6)
# 10. Promedio de variables numéricas por región y LADDER_6
tabla_resumen <- data %>%
group_by(Regional.indicator, LADDER_6) %>%
summarise_if(is.numeric, mean, na.rm = TRUE)
# Mostrar la tabla resumen de Healthy life expectancy
tabla_resumen %>%
select(Regional.indicator, LADDER_6, Healthy.life.expectancy)
`
—
Espero que esto te sirva para continuar con confianza. ¡Buen trabajo con todo lo que ya tienes hecho! Si necesitas más ayuda con la visualización, agrupaciones o cualquier otra parte de R, escríbeme sin problema.
Un abrazo y ¡ánimo con el resto del curso!
Jordi Ollé 😊