En este documento se construye un conjunto de datos simulados del sector salud, se describen estadísticamente sus variables numéricas y se visualiza la distribución de la condición de salud.

Objetivo

El objetivo es ilustrar un flujo general que tienen la construcción de documentos markdown de R en el que incluye:

Desarrollo

Se implementa la carga de librerías previamente instaladas; la creación de funciones personalizadas; el generar los datos simulados; se presenta un análisis descriptivo elemental; se visualiza un comparativo de frecuencias la condición de salud de paciente y finalmente se concluye con la interpretación del caso.

Cargar librerías

library(tidyverse)
library(ggplot2)
library(tidyverse)
library(ggplot2)

# Tablas compatibles con Word
library(flextable)
library(officer)

Definición de funciones

Función para cargar datos simulados

f_cargar_datos <- function(n = 200) {
  
  set.seed(2026)
  
  datos <- tibble(
    edad = sample(18:79, n, replace = TRUE),
    presion_sistolica = round(rnorm(n, mean = 120, sd = 15), 2),
    glucosa = round(rnorm(n, mean = 100, sd = 25), 2),
    colesterol = round(rnorm(n, mean = 200, sd = 30), 2),
    imc = round(rnorm(n, mean = 27, sd = 4), 2),
    sexo = sample(c("Masculino", "Femenino"), n, replace = TRUE),
    diagnostico = sample(
      c("Sano", "Hipertensión", "Diabetes"),
      n,
      replace = TRUE
    )
  )
  
  return(datos)
}

Función para describir datos numéricos

f_describir_datos_numericos <- function(df) {

  num_df <- df %>% dplyr::select(where(is.numeric))

  resumen_largo <- purrr::map_dfr(names(num_df), function(v) {
    x <- num_df[[v]]
    tibble::tibble(
      variable = v,
      media    = mean(x, na.rm = TRUE),
      sd       = sd(x, na.rm = TRUE),
      minimo   = min(x, na.rm = TRUE),
      maximo   = max(x, na.rm = TRUE)
    )
  }) %>%
    dplyr::mutate(dplyr::across(where(is.numeric), ~round(.x, 2)))

  ft <- flextable::flextable(resumen_largo) |> flextable::autofit()

  list(data = resumen_largo, table = ft)
}

Función para visualizar datos

f_visualizar_datos <- function(df) {
  
  ggplot(df, aes(x = diagnostico)) +
    geom_bar(fill = "steelblue") +
    labs(
      title = "Distribución de Diagnóstico",
      x = "Diagnóstico",
      y = "Frecuencia"
    ) +
    theme_minimal()
}

Ejecución del flujo completo

Generar datos

datos <- f_cargar_datos(200)

Mostrar primeras observaciones

ft_head <- flextable(head(datos, 10))
autofit(ft_head)

edad

presion_sistolica

glucosa

colesterol

imc

sexo

diagnostico

46

103.33

123.95

239.65

27.66

Femenino

Hipertensión

74

134.94

79.02

198.64

29.17

Masculino

Diabetes

50

128.43

81.01

193.56

27.04

Femenino

Hipertensión

55

96.54

78.34

204.04

28.17

Masculino

Diabetes

62

142.22

141.48

180.65

29.53

Femenino

Sano

64

102.46

113.92

201.71

18.51

Masculino

Sano

44

104.22

115.03

227.94

25.91

Femenino

Sano

61

97.92

50.76

206.11

28.52

Masculino

Sano

53

102.10

90.50

248.77

27.83

Masculino

Sano

65

114.78

128.94

182.20

27.52

Femenino

Diabetes

Estadística descriptiva

resultado <- f_describir_datos_numericos(datos)
resultado
## $data
## # A tibble: 5 × 5
##   variable          media    sd minimo maximo
##   <chr>             <dbl> <dbl>  <dbl>  <dbl>
## 1 edad               49.8  17.0   18     79  
## 2 presion_sistolica 122.   13.8   82.0  160. 
## 3 glucosa           101.   28.2   37.2  179. 
## 4 colesterol        199.   27.6  122.   284. 
## 5 imc                27.1   4     14.8   40.7
## 
## $table
## a flextable object.
## col_keys: `variable`, `media`, `sd`, `minimo`, `maximo` 
## header has 1 row(s) 
## body has 5 row(s) 
## original dataset sample: 
## 'data.frame':    5 obs. of  5 variables:
##  $ variable: chr  "edad" "presion_sistolica" "glucosa" "colesterol" ...
##  $ media   : num  49.8 121.5 101.1 199.4 27.1
##  $ sd      : num  17 13.8 28.2 27.6 4
##  $ minimo  : num  18 82 37.2 121.9 14.8
##  $ maximo  : num  79 159.6 178.6 284.4 40.7

Visualización

f_visualizar_datos(datos)


Interpretación del caso

El documento presenta un ejemplo en R Markdown para simular datos, describir estadísticamente y visualizar información dentro de un flujo de análisis reproducible para la ciencia de los datos y el aprendizaje automático.