Visualización de datos con ggplot2


En esta sección, utilizaremos los comandos de tidyverse de la plataforma R para la visualización de datos. Los paquetes y conjuntos de datos a ser utilizados en esta sección son:

library(tidyverse)

who <- read_csv("data/who.csv")

https://drive.google.com/drive/folders/1fFZZHqKBNJcVfp9Jwl-trLkZVsonETt_?usp=drive_link
https://upch-r4pubh.netlify.app/ggplot

✅ 1. Gráfico de dispersión

Comparar dos variables numéricas: esperanza de vida vs gasto en salud.

ggplot(who, aes(x = health_expenditure_gdp, y = life_expectancy_birth)) +
geom_point(color = "darkblue", size = 2, alpha = 0.7) +
labs(
title = "Esperanza de vida vs Gasto en salud (% del PBI)",
x = "Gasto en salud (% del PBI)",
y = "Esperanza de vida al nacer"
) +
theme_minimal()

✅ 2. Boxplot

Comparar distribución de esperanza de vida por continente:

ggplot(who, aes(x = continent, y = life_expectancy_birth, fill = continent)) +
geom_boxplot() +
labs(
title = "Esperanza de vida por continente",
x = "Continente",
y = "Esperanza de vida"
) +
theme_minimal()

✅ 3. Gráfico de barras

Número de países por continente:

ggplot(who, aes(x = continent)) +
geom_bar(fill = "steelblue") +
labs(
title = "Número de países por continente",
x = "Continente",
y = "Cantidad"
) +
theme_minimal()

✅ 4. Histograma

Distribución de la mortalidad infantil:

ggplot(who, aes(x = infant_mortality_rate)) +
geom_histogram(binwidth = 10, fill = "tomato", color = "white") +
labs(
title = "Distribución de la mortalidad infantil",
x = "Mortalidad infantil",
y = "Frecuencia"
) +
theme_minimal()

✅ 5. Gráfico con etiquetas (países destacados)

Esperanza de vida vs gasto en salud, destacando países con texto:

ggplot(who, aes(x = health_expenditure_person, y = life_expectancy_birth)) +
geom_point(alpha = 0.6) +
geom_text(aes(label = ifelse(life_expectancy_birth > 80, country, "")), hjust = 1, vjust = 1) +
labs(
title = "Países con alta esperanza de vida y gasto en salud",
x = "Gasto en salud per cápita",
y = "Esperanza de vida"
) +
theme_minimal()




🧹 Pasos básicos para limpieza de datos en R (usando tidyverse)

Primero, asegúrate de tener cargado el paquete tidyverse:

install.packages("tidyverse") # Solo la primera vez
library(tidyverse)

1. 📥 Cargar tus datos

data <- read_csv("tus_datos.csv") # También puedes usar read_excel() o read.table()

2. 👀 Explorar el dataset

glimpse(data)
summary(data)
head(data)

3. 🧼 Renombrar variables

data <- data %>%
rename(edad = EDAD_PACIENTE, sexo = SEXO)

4. 🗑️ Eliminar columnas innecesarias

data <- data %>%
select(-columna_innecesaria1, -columna_innecesaria2)

5. ❓ Reemplazar valores NA o vacíos

# Ver cuántos NA hay por columna
colSums(is.na(data))

# Eliminar filas con NA
data <- na.omit(data)

# O reemplazar NA por un valor específico
data <- data %>%
mutate(edad = if_else(is.na(edad), 0, edad))

6. 🧹 Filtrar datos inválidos o inconsistentes

# Quitar edades negativas
data <- data %>%
filter(edad >= 0)

# Mantener solo sexo válido
data <- data %>%
filter(sexo %in% c("M", "F"))

7. 🔤 Convertir variables a su tipo correcto

data <- data %>%
mutate(
sexo = as.factor(sexo),
edad = as.numeric(edad),
fecha_ingreso = as.Date(fecha_ingreso, format = "%Y-%m-%d")
)

8. 🔁 Recodificar variables

data <- data %>%
mutate(
sexo = recode(sexo, "M" = "Masculino", "F" = "Femenino")
)

9. ✨ Verificar resultados

str(data)
summary(data)