library(dplyr) library(skimr) library(visdat) library(ggplot2) library(modeest) library(zoo) library(mice)
setwd(“C:/Users/ALENKAR/Documents/CC/TAREA2”)
datos <- read.csv(“data_prac_2 1.csv”, header = TRUE, sep = “,”, dec = “.”, na.strings = c(“null”, ““), stringsAsFactors = FALSE)
colnames(datos)
datos %>% summarise_all(~sum(is.na(.)))
str(datos)
datos <- datos %>% mutate( edad = as.numeric(edad), imc =
as.numeric(imc), clm = as.numeric(clm), hijos = as.numeric(hijos)
)
datos <- datos %>% mutate( sexo = as.factor(sexo), fumador = as.factor(fumador), region = as.factor(region) )
if (“X” %in% colnames(datos)) { datos <- datos %>% select(-X) }
str(datos)
datos %>% summarise_all(~sum(is.na(.)))
duplicados <- duplicated(datos) sum(duplicados) # Muestra cuántas filas están duplicadas
datos <- datos %>% distinct()
datos_num <- select(datos, edad, imc, clm)
datos_mean <- data.frame(lapply(datos_num, function(x) ifelse(is.na(x), mean(x, na.rm = TRUE), x)))
datos_median <- data.frame(lapply(datos_num, function(x) ifelse(is.na(x), median(x, na.rm = TRUE), x)))
datos_mode <- data.frame(lapply(datos_num, function(x) ifelse(is.na(x), mfv(x, na_rm = TRUE)[1], x))) # Se usa [1] para evitar errores en caso de múltiples modas
datos_trimmed_mean <- data.frame(lapply(datos_num, function(x) ifelse(is.na(x), mean(x, na.rm = TRUE, trim = 0.1), x)))
datos_interpol <- data.frame(lapply(datos_num, function(x) ifelse(is.na(x), na.approx(x, na.rm = FALSE), x)))
imputed_data <- mice(datos, method = “norm.predict”, m = 1) datos_lm <- complete(imputed_data)
summary(datos_mean) summary(datos_median) summary(datos_mode) summary(datos_trimmed_mean) summary(datos_interpol) summary(datos_lm)
datos_interpol <- datos_interpol %>% mutate( sexo = datos\(sexo, fumador = datos\)fumador, region = datos\(region, hijos = datos\)hijos )
colnames(datos_interpol)
ggplot(datos_interpol, aes(x = imc)) + geom_histogram(binwidth = 2, fill = “blue”, color = “black”, alpha = 0.7) + labs(title = “Distribución del IMC”, x = “IMC”, y = “Frecuencia”) + theme_minimal()
media_sexo <- datos_interpol %>% group_by(sexo) %>% summarise(media_clm = mean(clm, na.rm = TRUE))
print(media_sexo)
media_fumador_sexo <- datos_interpol %>% group_by(fumador, sexo) %>% summarise(media_clm = mean(clm, na.rm = TRUE))
print(media_fumador_sexo)
region_max <- datos_interpol %>% group_by(region) %>% summarise(media_clm = mean(clm, na.rm = TRUE)) %>% arrange(desc(media_clm))
print(region_max[1, ]) # Muestra la región con el monto más alto
datos_interpol <- datos_interpol %>% mutate(obesidad = ifelse(imc > 30, “Sí”, “No”))
top_obesos <- datos_interpol %>% filter(obesidad == “Sí”) %>% select(edad, sexo, hijos, clm, region) %>% arrange(desc(clm)) %>% slice_head(n = 10) # Asegura exactamente 10 resultados
print(top_obesos)