Inicio › Foros › Etapa I – Raíces Profundas › 6. Tips de Data wrangling. Manipulación de data frames
- Este debate tiene 4 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 1 año por
Jordi.
-
AutorEntradas
-
11 marzo, 2025 a las 0:31 #21933
RobertoParticipanteBuenas noches Jordi, te adjunto esta hoja de trabajo. La segunda parte del ejercicio no logro realizarla en los videos del curso no encuentro. La verdad es que estoy muy atascado con R. Por motivos de horarios laborales me es imposible asistir a los directos, quizás se el momento de resolver las dudas. Y al no poder asistir me quedo con ellas y eso no me permite avanzar, hay alguna forma de poder resolverlas?
19 marzo, 2025 a las 9:34 #21958
JordiSuperadministradorHola Roberto, pásame tus dudas escritas. Y te las respondo. Mándamelas aquí: jordi@conceptosclaros.com
20 marzo, 2025 a las 13:20 #22015
RobertoParticipanteOk, muchas gracias, te escribo la semana que viene que regreso a España, tuve que venir a Ecuador a hacer un trabajo y en estos días por ese motivo voy un poco lento, y como me atasque con R decidí avanzar con el bloque III, en cuanto llegue a España te envió el código de R que estaba utilizando y que me generaba errores.
Muchas gracias Jordi.
8 abril, 2025 a las 7:20 #22113
JordiSuperadministradorHola 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
.Ry 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ónread.csv2()con separador",", lo que no es compatible:read.csv2()espera el separador;.### ✅ Corrección:
Debes usar simplementeread.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.csven 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é 😊8 abril, 2025 a las 7:20 #22114
JordiSuperadministradorHola 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
.Ry 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ónread.csv2()con separador",", lo que no es compatible:read.csv2()espera el separador;.### ✅ Corrección:
Debes usar simplementeread.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.csven 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é 😊 -
AutorEntradas
- Debes estar registrado para responder a este debate.