# 1. Cargar la base de datos desde Excel
Turbo_base_de_datos_de_Anna_ahora_si_sale_por_que_sale_la_tesis_version_1_1 <- read_excel("C:/Users/fidel/OneDrive - UNIVERSIDAD AUTONOMA DE SINALOA/MDATOS/Mdatos Dra Pemex nuevo/Turbo base de datos de Anna, ahora si sale por que sale la tesis (version 1) 1.xlsx")New names:
• `` -> `...25`
df <- Turbo_base_de_datos_de_Anna_ahora_si_sale_por_que_sale_la_tesis_version_1_1
# 2. Eliminar la primera fila (cabecera descriptiva)
df <- df[-1, ]
# 3. Normalizar nombres de columnas para facilidad de uso
df <- clean_names(df)
#View(df)
# 4. Conversión y recodificación de variables principales
# Edad
df$edad <- as.numeric(df$edad)
# Sexo: 1 = Femenino, 2 = Masculino
df$sexo <- dplyr::case_when(
trimws(df$sexo) == "1" ~ "Femenino",
trimws(df$sexo) == "2" ~ "Masculino",
trimws(df$sexo) == "3" ~ "Masculino",
TRUE ~ NA_character_
)
# Uso de Metformina: 1 = Sí, 0/2 = No
df$uso_de_metformina <- dplyr::case_when(
trimws(df$uso_de_metformina) == "1" ~ "Sí",
trimws(df$uso_de_metformina) %in% c("0", "2") ~ "No",
TRUE ~ NA_character_
)
# Uso de aspirina: 1 = Sí, 0/2 = No
df$uso_de_aspirina <- dplyr::case_when(
trimws(df$uso_de_aspirina) == "1" ~ "Sí",
trimws(df$uso_de_aspirina) %in% c("0", "2") ~ "No",
TRUE ~ NA_character_
)
# Mortalidad 30 días: 1 = Fallecido, 0 = Sobreviviente
df$murio_antes_de_30_dias <- dplyr::case_when(
trimws(df$murio_antes_de_30_dias) == "1" ~ "Fallecido",
trimws(df$murio_antes_de_30_dias) == "0" ~ "Sobreviviente",
trimws(df$murio_antes_de_30_dias) %in% c("0", "2") ~ "Sobreviviente",
TRUE ~ NA_character_
)
# Diabetes
df$diabetes <- dplyr::case_when(
trimws(df$diabetes) == "1" ~ "Sí",
trimws(df$diabetes) == "0" ~ "No",
trimws(df$diabetes) == "2" ~ "No",
TRUE ~ NA_character_
)
# recodificación de la variable es 'hbac':
df$hbac <- as.numeric(ifelse(df$hbac == "X" | trimws(df$hbac) == "", NA, df$hbac))Warning: NAs introducidos por coerción
#Recodificación de la variable sepsis
df$origen_de_la_sepsis <- dplyr::case_when(
trimws(df$origen_de_la_sepsis) == "1" ~ "Urinario",
trimws(df$origen_de_la_sepsis) == "2" ~ "Pulmonar",
trimws(df$origen_de_la_sepsis) == "3" ~ "Tejidos",
trimws(df$origen_de_la_sepsis) == "4" ~ "Abdominal",
trimws(df$origen_de_la_sepsis) == "5" ~ "Protesis",
trimws(df$origen_de_la_sepsis) == "6" ~ "Sitio Qx",
trimws(df$origen_de_la_sepsis) == "7" ~ "Otico",
TRUE ~ NA_character_
)
# Uso de aspirina: 1 = Sí, 0/2 = No
df$choque <- dplyr::case_when(
trimws(df$choque) == "1" ~ "Sí",
trimws(df$choque) %in% c("0", "2") ~ "No",
TRUE ~ NA_character_
)
#arreglo días de hospitalización
df$dias_de_hospitalizacion <- as.numeric(df$dias_de_hospitalizacion)
#recodificar la variable cultivo y que los valores que sean guion ("-") o espacios en blanco se transformen en NA
df$cultivo <- ifelse(trimws(df$cultivo) == "-" | trimws(df$cultivo) == "", NA, trimws(df$cultivo))
# Opcional: Filtrar solo pacientes con edad válida
#df <- df %>% filter(!is.na(edad))
#limpieza variables númericas
# Lista de variables a limpiar
vars_numericas <- c("leucos", "neu", "lin", "hb", "ade", "plq", "glu", "crea")
# Limpieza: convertir a numérico y los vacíos a NA
for (var in vars_numericas) {
df[[var]] <- as.numeric(ifelse(trimws(df[[var]]) == "", NA, df[[var]]))
}Warning: NAs introducidos por coerción
Warning: NAs introducidos por coerción
Warning: NAs introducidos por coerción
Warning: NAs introducidos por coerción
# Opcional: resumen para verificar que todo esté correcto
summary(df[, vars_numericas]) leucos neu lin hb
Min. : 0.000 Min. : 0.00 Min. : 0.000 Min. : 0.0
1st Qu.: 8.557 1st Qu.: 7.10 1st Qu.: 0.590 1st Qu.:10.1
Median :13.995 Median :11.84 Median : 0.980 Median :12.4
Mean :14.753 Mean :12.74 Mean : 2.494 Mean :12.3
3rd Qu.:19.587 3rd Qu.:17.40 3rd Qu.: 1.640 3rd Qu.:14.5
Max. :55.480 Max. :54.51 Max. :200.000 Max. :19.3
NA's :1 NA's :1 NA's :1
ade plq glu crea
Min. : 0.00 Min. : 0.0 Min. : 0.0 Min. : 0.000
1st Qu.: 13.70 1st Qu.:150.0 1st Qu.:105.0 1st Qu.: 0.900
Median : 15.00 Median :217.0 Median :140.0 Median : 1.480
Mean : 17.92 Mean :236.9 Mean :166.6 Mean : 4.063
3rd Qu.: 17.00 3rd Qu.:309.0 3rd Qu.:187.0 3rd Qu.: 2.290
Max. :174.10 Max. :795.0 Max. :799.0 Max. :169.000
NA's :1 NA's :1 NA's :3 NA's :1
df$lra <- dplyr::case_when(
trimws(df$lra) == "1" ~ "Sí",
trimws(df$lra) == "2" ~ "No",
trimws(df$lra) %in% c("0", "2") ~ "No",
TRUE ~ NA_character_
)
df$kdigo <- dplyr::case_when(
trimws(df$kdigo) == "1" ~ "I",
trimws(df$kdigo) == "2" ~ "II",
trimws(df$kdigo) == "3" ~ "III",
trimws(df$kdigo) == "0" | trimws(df$kdigo) == "" ~ NA_character_, # O puedes poner "Sin Lesión"
TRUE ~ NA_character_
)
# Vista preliminar de la base procesada
summary(df) numero ficha dias_de_hospitalizacion
Min. : 1.00 Length:190 Min. : 1.000
1st Qu.: 48.25 Class :character 1st Qu.: 3.000
Median : 95.50 Mode :character Median : 7.000
Mean :111.98 Mean : 9.253
3rd Qu.:188.75 3rd Qu.:11.000
Max. :254.00 Max. :56.000
murio_antes_de_30_dias edad sexo diabetes
Length:190 Min. : 31.00 Length:190 Length:190
Class :character 1st Qu.: 71.25 Class :character Class :character
Mode :character Median : 80.00 Mode :character Mode :character
Mean : 77.23
3rd Qu.: 86.75
Max. :102.00
hbac uso_de_metformina uso_de_aspirina origen_de_la_sepsis
Min. : 0.000 Length:190 Length:190 Length:190
1st Qu.: 5.975 Class :character Class :character Class :character
Median : 6.750 Mode :character Mode :character Mode :character
Mean : 6.419
3rd Qu.: 7.875
Max. :12.500
NA's :136
choque cultivo lactato leucos
Length:190 Length:190 Length:190 Min. : 0.000
Class :character Class :character Class :character 1st Qu.: 8.557
Mode :character Mode :character Mode :character Median :13.995
Mean :14.753
3rd Qu.:19.587
Max. :55.480
neu lin hb ade
Min. : 0.00 Min. : 0.000 Min. : 0.0 Min. : 0.00
1st Qu.: 7.10 1st Qu.: 0.590 1st Qu.:10.1 1st Qu.: 13.70
Median :11.84 Median : 0.980 Median :12.4 Median : 15.00
Mean :12.74 Mean : 2.494 Mean :12.3 Mean : 17.92
3rd Qu.:17.40 3rd Qu.: 1.640 3rd Qu.:14.5 3rd Qu.: 17.00
Max. :54.51 Max. :200.000 Max. :19.3 Max. :174.10
NA's :1 NA's :1 NA's :1 NA's :1
plq glu crea lra
Min. : 0.0 Min. : 0.0 Min. : 0.000 Length:190
1st Qu.:150.0 1st Qu.:105.0 1st Qu.: 0.900 Class :character
Median :217.0 Median :140.0 Median : 1.480 Mode :character
Mean :236.9 Mean :166.6 Mean : 4.063
3rd Qu.:309.0 3rd Qu.:187.0 3rd Qu.: 2.290
Max. :795.0 Max. :799.0 Max. :169.000
NA's :1 NA's :3 NA's :1
kdigo x25
Length:190 Length:190
Class :character Class :character
Mode :character Mode :character
str(df
)tibble [190 × 25] (S3: tbl_df/tbl/data.frame)
$ numero : num [1:190] 6 7 16 17 21 26 30 35 40 44 ...
$ ficha : chr [1:190] "077240-08" "076558-00" "231380-08" "200041-00" ...
$ dias_de_hospitalizacion: num [1:190] 9 10 3 7 20 2 2 18 4 4 ...
$ murio_antes_de_30_dias : chr [1:190] "Fallecido" "Sobreviviente" "Sobreviviente" "Fallecido" ...
$ edad : num [1:190] 73 79 74 77 52 86 84 80 72 82 ...
$ sexo : chr [1:190] "Femenino" "Masculino" "Femenino" "Femenino" ...
$ diabetes : chr [1:190] "Sí" "Sí" "Sí" "Sí" ...
$ hbac : num [1:190] NA NA 7.4 NA NA NA NA NA 6.7 6.3 ...
$ uso_de_metformina : chr [1:190] "Sí" "Sí" "Sí" "Sí" ...
$ uso_de_aspirina : chr [1:190] "Sí" "No" "No" "No" ...
$ origen_de_la_sepsis : chr [1:190] "Tejidos" "Urinario" "Abdominal" NA ...
$ choque : chr [1:190] "No" "No" "No" "No" ...
$ cultivo : chr [1:190] NA NA NA NA ...
$ lactato : chr [1:190] NA NA "19.86" NA ...
$ leucos : num [1:190] 7.95 20 17.54 22.81 12.4 ...
$ neu : num [1:190] 5.61 17.3 1.4 20.85 10.98 ...
$ lin : num [1:190] 1.72 1.9 14.6 0.87 0.65 0.4 1.97 1.31 0.6 1.3 ...
$ hb : num [1:190] 8.5 5.6 10.7 8.8 14.8 10.1 8.7 11.1 12.8 13.1 ...
$ ade : num [1:190] 14.3 14.8 15.1 14.4 16.6 16.3 19.1 13.8 17.4 16.5 ...
$ plq : num [1:190] 294 347 335 235 161 159 343 291 156 260 ...
$ glu : num [1:190] 132 412 186 106 164 344 166 291 266 154 ...
$ crea : num [1:190] 0.85 2.29 0.89 0.49 1.77 1.16 1.39 1.97 2.05 0.87 ...
$ lra : chr [1:190] "No" "Sí" "No" "No" ...
$ kdigo : chr [1:190] NA "III" NA NA ...
$ x25 : chr [1:190] "PROC 1.33" NA NA "3.28" ...