# Fijamos una semilla para que los resultados sean reproducibles (opcional)
set.seed(2026)

# 1. Creamos las variables básicas
id <- paste0("ID_", 1:30)
edad <- sample(18:65, 30, replace = TRUE)
gene <- rep(c(1, 2), each = 15) # 15 mujeres (1) y 15 hombres (2)
trat <- factor(sample(c("A", "B", "C"), 30, replace = TRUE))

# Generamos pesos y estaturas con ligeras diferencias entre sexos para realismo
peso <- c(rnorm(15, 65, 10), rnorm(15, 80, 12))   # Mujeres media 65kg, Hombres 80kg
alt  <- c(rnorm(15, 165, 7), rnorm(15, 178, 8))   # Mujeres media 165cm, Hombres 178cm

# Creamos el dataframe original
df_clinico <- data.frame(
  Id = id,
  Edad = edad,
  Gene = gene,
  Trat = trat,
  Peso = peso,
  Alt = alt,
  stringsAsFactors = FALSE
)
# Resumen de estructura y estadísticos
str(df_clinico)
## 'data.frame':    30 obs. of  6 variables:
##  $ Id  : chr  "ID_1" "ID_2" "ID_3" "ID_4" ...
##  $ Edad: int  46 50 55 62 64 44 61 53 65 22 ...
##  $ Gene: num  1 1 1 1 1 1 1 1 1 1 ...
##  $ Trat: Factor w/ 3 levels "A","B","C": 3 2 1 2 2 1 1 1 1 1 ...
##  $ Peso: num  68.4 66 77.8 81.6 82.8 ...
##  $ Alt : num  147 165 162 161 168 ...
summary(df_clinico)
##       Id                 Edad            Gene     Trat        Peso      
##  Length:30          Min.   :20.00   Min.   :1.0   A:16   Min.   :51.08  
##  Class :character   1st Qu.:37.25   1st Qu.:1.0   B: 6   1st Qu.:62.35  
##  Mode  :character   Median :50.50   Median :1.5   C: 8   Median :72.67  
##                     Mean   :47.43   Mean   :1.5          Mean   :72.66  
##                     3rd Qu.:59.50   3rd Qu.:2.0          3rd Qu.:82.46  
##                     Max.   :65.00   Max.   :2.0          Max.   :93.32  
##       Alt       
##  Min.   :146.5  
##  1st Qu.:162.8  
##  Median :168.2  
##  Mean   :169.1  
##  3rd Qu.:176.8  
##  Max.   :190.4
# Ver las primeras filas
head(df_clinico)
##     Id Edad Gene Trat     Peso      Alt
## 1 ID_1   46    1    C 68.39008 146.5500
## 2 ID_2   50    1    B 66.04986 165.1446
## 3 ID_3   55    1    A 77.81489 162.0446
## 4 ID_4   62    1    B 81.60042 161.0181
## 5 ID_5   64    1    B 82.76029 167.5377
## 6 ID_6   44    1    A 85.05630 154.9093
# Calculamos el IMC: peso / (estatura en metros)^2
df_clinico$IMC <- df_clinico$Peso / (df_clinico$Alt / 100)^2

# Redondeamos a 2 decimales para que quede limpio
df_clinico$IMC <- round(df_clinico$IMC, 2)

head(df_clinico)
##     Id Edad Gene Trat     Peso      Alt   IMC
## 1 ID_1   46    1    C 68.39008 146.5500 31.84
## 2 ID_2   50    1    B 66.04986 165.1446 24.22
## 3 ID_3   55    1    A 77.81489 162.0446 29.63
## 4 ID_4   62    1    B 81.60042 161.0181 31.47
## 5 ID_5   64    1    B 82.76029 167.5377 29.48
## 6 ID_6   44    1    A 85.05630 154.9093 35.44
# Separamos por género
Df_Mujeres <- df_clinico[df_clinico$Gene == 1, ]
Df_Hombres <- df_clinico[df_clinico$Gene == 2, ]

# Verificamos que cada uno tenga 15 observaciones
nrow(Df_Mujeres)
## [1] 15
nrow(Df_Hombres)
## [1] 15
# Combinamos de nuevo
df_recombinado <- rbind(Df_Mujeres, Df_Hombres)

# Comprobamos que volvemos a tener las 30 observaciones
dim(df_recombinado)
## [1] 30  7
# Comparativa rápida de IMC por Género
boxplot(IMC ~ Gene, data = df_recombinado, 
        names = c("Mujeres", "Hombres"),
        main = "Distribución del IMC por Género",
        col = c("pink", "lightblue"))