Este documento incluye las respuestas de Catarina Almeida al Laboratorio 1 (LAB1), para la asignatura Software para el análisis de datos (SAD) del máster interuniversitario de Bioinformática y Bioestadística de la Universitat Oberta de Catalunya (UOC) y la Universitat de Barcelona (UB).
El fichero incluye los 10 ejercicios, así como el Caso Prático.
Antes de empezar verificamos directorio de trabajo
## [1] "/Users/catarinaalmeida/Desktop/LAB1"
Utilizando las funciones citadas en este Laboratorio, comprobad qué paquetes tenéis instalados en vuestra versión de RStudio e instalad el paquete MASS y el paquete Survival y comprobad la información que contienen. Buscad información sobre el paquete Rcmdr (R Commander) desde la consola.
Paquetes instalados en la versión de RStudio
library()
Instalación del paquete MASS y Survival
install.packages(“MASS”, “Survival”)
Información del paquete R Commander
??Rcmdr
Importación de un archivo de texto y summary de tres
variables
FicheroImportado1_E2 <- read.csv("/Users/catarinaalmeida/Desktop/LAB1/boxplot_format.txt", sep="\t")
head(FicheroImportado1_E2)
## Nom variable Group
## 1 IND1 10 A
## 2 IND2 7 A
## 3 IND3 20 A
## 4 IND4 14 A
## 5 IND5 14 A
## 6 IND6 12 A
## Nom variable Group
## Length:72 Min. : 0.00 Length:72
## Class :character 1st Qu.: 3.00 Class :character
## Mode :character Median : 7.00 Mode :character
## Mean : 9.50
## 3rd Qu.:14.25
## Max. :26.00
Importación de un fichero plano y summary de Tukey de dos
variables
El fichero en cuestión presenta datos de 1981-2010 de todas las normales climáticas de la estación meterologica de New York Laguardia, USA utilizando el período de treinta años de temperatura, grados día, precipitación, nevadas, profundidad de la nieve, viento, etc.
Fue recuperado de esta página.
Como el fichero es muy largo, solo presento el header de 6
columnas.
FicheroImportado2_E2<- read.csv("/Users/catarinaalmeida/Desktop/LAB1/USW00014732.csv", sep=",")
head(FicheroImportado2_E2[,1:6])
## STATION DATE LATITUDE LONGITUDE ELEVATION NAME
## 1 USW00014732 1 40.7794 -73.8803 3.4 NEW YORK LAGUARDIA AP, NY US
## 2 USW00014732 2 40.7794 -73.8803 3.4 NEW YORK LAGUARDIA AP, NY US
## 3 USW00014732 3 40.7794 -73.8803 3.4 NEW YORK LAGUARDIA AP, NY US
## 4 USW00014732 4 40.7794 -73.8803 3.4 NEW YORK LAGUARDIA AP, NY US
## 5 USW00014732 5 40.7794 -73.8803 3.4 NEW YORK LAGUARDIA AP, NY US
## 6 USW00014732 6 40.7794 -73.8803 3.4 NEW YORK LAGUARDIA AP, NY US
## [1] 0.00 0.00 0.00 2.15 6.40
## [1] 28.60 35.45 49.65 65.05 71.90
A partir del conjunto de datos anorexia del paquete MASS, que corresponden a los datos de cambio de peso de pacientes jóvenes con anorexia, mostrad:
Recogemos el dato
Analizamos tipologia del dato
## 'data.frame': 72 obs. of 3 variables:
## $ Treat : Factor w/ 3 levels "CBT","Cont","FT": 2 2 2 2 2 2 2 2 2 2 ...
## $ Prewt : num 80.7 89.4 91.8 74 78.1 88.3 87.3 75.1 80.6 78.4 ...
## $ Postwt: num 80.2 80.1 86.4 86.3 76.1 78.1 75.1 86.7 73.5 84.6 ...
Analizamos si hay NA
## [1] 0
Y si hay NULOS
## [1] 0
Transformamos los valores
anorexia_E3 <- gsub("CBT","Cogn Beh Tr",gsub("Cont","Contr",gsub("FT","Fam Tr",anorexia$Treat)))
anorexia_E3
## [1] "Contr" "Contr" "Contr" "Contr" "Contr"
## [6] "Contr" "Contr" "Contr" "Contr" "Contr"
## [11] "Contr" "Contr" "Contr" "Contr" "Contr"
## [16] "Contr" "Contr" "Contr" "Contr" "Contr"
## [21] "Contr" "Contr" "Contr" "Contr" "Contr"
## [26] "Contr" "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr"
## [31] "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr"
## [36] "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr"
## [41] "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr"
## [46] "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr"
## [51] "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr" "Cogn Beh Tr"
## [56] "Fam Tr" "Fam Tr" "Fam Tr" "Fam Tr" "Fam Tr"
## [61] "Fam Tr" "Fam Tr" "Fam Tr" "Fam Tr" "Fam Tr"
## [66] "Fam Tr" "Fam Tr" "Fam Tr" "Fam Tr" "Fam Tr"
## [71] "Fam Tr" "Fam Tr"
library(MASS)
data(biopsy)
write.csv(biopsy, file="/Users/catarinaalmeida/Desktop/LAB1/biopsy_E4.csv")
library(MASS)
data(Melanoma)
write.csv(Melanoma, file="/Users/catarinaalmeida/Desktop/LAB1/melanoma_E4.csv")
write.table(Melanoma, file="/Users/catarinaalmeida/Desktop/LAB1/melanoma_E4.txt")
write.table(Melanoma, file="/Users/catarinaalmeida/Desktop/LAB1/melanoma_E4.xlsx")
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.00 42.00 54.00 52.46 65.00 95.00
MelanomaAge_E4 <- summary(Melanoma$age)
capture.output(MelanomaAge_E4, file="/Users/catarinaalmeida/Desktop/LAB1/MelanomaAge_E4.doc")
Voy a importar el siguiente dataset (link)
del Center for Disease Prevention, denominado Weekly COVID-19
Vaccination Coverage among Pregnant Women by Race and
Ethnicity.
COVIDVac_Preg_E4 <- read.csv("/Users/catarinaalmeida/Desktop/LAB1/Weekly_COVID-19_Vaccination_Coverage_among_Pregnant_Women_by_Race_and_Ethnicity_20250304.csv",sep=",")
head(COVIDVac_Preg_E4)
## Week_Ending_Date Race.and.Ethnicity Percent
## 1 09/23/2023 12:00:00 AM American Indian / Alaska Native, NH 0.0
## 2 09/30/2023 12:00:00 AM American Indian / Alaska Native, NH 0.4
## 3 10/07/2023 12:00:00 AM American Indian / Alaska Native, NH 1.0
## 4 10/14/2023 12:00:00 AM American Indian / Alaska Native, NH 2.9
## 5 10/21/2023 12:00:00 AM American Indian / Alaska Native, NH 4.7
## 6 10/28/2023 12:00:00 AM American Indian / Alaska Native, NH 6.2
## Denominator Date.Order Race.Sort.Order
## 1 279 2 1
## 2 284 3 1
## 3 287 4 1
## 4 279 5 1
## 5 275 6 1
## 6 272 7 1
En el siguiente ejemplo veremos cómo utilizar diferentes operadores sobre el conjunto de datos birthwt, así como también algunas funciones que nos permiten obtener más información de las variables:
Cargamos el dataset
## low age lwt race smoke ptl ht ui ftv bwt
## 85 0 19 182 2 0 0 0 1 0 2523
## 86 0 33 155 3 0 0 0 0 3 2551
## 87 0 20 105 1 1 0 0 0 1 2557
## 88 0 21 108 1 1 0 0 1 2 2594
## 89 0 18 107 1 1 0 0 1 0 2600
## 91 0 21 124 3 0 0 0 0 0 2622
La edad máxima de las madres del conjunto de datos es
45.
La edad minima de las madres del conjunto de datos es
14.
El rango de edades de las madres del conjunto de datos es
31.
MenorPesoBebe <- min(birthwt$bwt)
Fumar_BebeMenorPeso_E5_D <- birthwt$smoke[birthwt$bwt == MenorPesoBebe]
La madre del bebe con menor peso es Fumadora.
EdadMadreMax <- max(birthwt$age)
MadreEdadMax_PesoBebe_E5_E <- birthwt$bwt[birthwt$age == EdadMadreMax]
El peso del bebe de la madre con mas edad es 4990.
Los pesos de los bebes con menos visitas son 2523, 2557, 2594, 2600, 2622, 2637, 2637, 2663, 2665, 2722, 2733, 2751, 2750, 2769, 2769, 2778, 2807, 2821, 2835, 2836, 2863, 2877, 2877, 2906, 2920, 2920, 2920, 2920, 2948, 2948, 2977, 2977, 2977, 2977, 2922, 3005, 3033, 3042, 3062, 3062, 3062, 3062, 3062, 3090, 3090, 3090, 3100, 3104, 3132, 3147, 3175, 3175, 3203, 3203, 3203, 3225, 3225, 3232, 3232, 3234, 3260, 3274, 3274, 3317, 3317, 3317, 3321, 3331, 3374, 3374, 3402, 3416, 3444, 3459, 3460, 3473, 3544, 3487, 3544, 3572, 3572, 3586, 3600, 3614, 3614, 3629, 3629, 3637, 3643, 3651, 3651, 3651, 3651, 3699, 3728, 3756, 3770, 3770, 3770, 3790, 3799, 3827, 3856, 3860, 3884, 3884, 3912, 3940, 3941, 3941, 3969, 3983, 3997, 3997, 4054, 4054, 4111, 4153, 4167, 4174, 4238, 4593, 4990, 709, 1021, 1135, 1330, 1474, 1588, 1588, 1701, 1729, 1790, 1818, 1885, 1893, 1899, 1928, 1928, 1928, 1936, 1970, 2055, 2055, 2082, 2084, 2084, 2100, 2125, 2187, 2187, 2211, 2225, 2240, 2240, 2282, 2296, 2296, 2325, 2353, 2353, 2367, 2381, 2381, 2381, 2410, 2410, 2410, 2424, 2438, 2442, 2466, 2466, 2466, 2495, 2495, 2495.
A partir del conjunto de datos anorexia trabajado en apartados
anteriores, cread una matriz que tenga como columnas los valores de
Prewt y Postwt, y cada fila sean los valores correspondientes para cada
posición.
Tengo que convertir la tabla en una matriz:
data(anorexia)
filas <- c(anorexia$Prewt,anorexia$Postwt)
Matriz_Anorexia_E6 <- matrix(filas,ncol=2)
head.matrix(Matriz_Anorexia_E6)
## [,1] [,2]
## [1,] 80.7 80.2
## [2,] 89.4 80.1
## [3,] 91.8 86.4
## [4,] 74.0 86.3
## [5,] 78.1 76.1
## [6,] 88.3 78.1
Identificador <- c("I1","I2","I3","I4","I5","I6","I7","I8","I9","I10","I11","I12","I13","I14","I15","I16","I17","I18","I19","I20","I21","I22","I23","I24","I25")
Edad <-c(23,24,21,22,23,25,26,24,21,22,23,25,26,24,22,21,25,26,24,21,25,27,26,22,29)
Sexo <-c(1,2,1,1,1,2,2,2,1,2,1,2,2,2,1,1,1,2,2,2,1,2,1,1,2)
Peso <-c(76.5,81.2,79.3,59.5,67.3,78.6,67.9,100.2,97.8,56.4,65.4,67.5,87.4,99.7,87.6,93.4,65.4,73.7,85.1,61.2,54.8,103.4,65.8,71.7,85.0)
Alt <-c(165,154,178,165,164,175,182,165,178,165,158,183,184,164,189,167,182,179,165,158,183,184,189,166,175)
Fuma <-c("SÍ","NO","SÍ","SÍ","NO","NO","NO","SÍ","SÍ","SÍ","NO","NO","SÍ","SÍ","SÍ","SÍ","NO","NO","SÍ","SÍ","SÍ","NO","SÍ","NO","SÍ")
Trat_Pulmon<- data.frame(Identificador,Edad,Sexo,Peso,Alt,Fuma)
head(Trat_Pulmon)
## Identificador Edad Sexo Peso Alt Fuma
## 1 I1 23 1 76.5 165 SÍ
## 2 I2 24 2 81.2 154 NO
## 3 I3 21 1 79.3 178 SÍ
## 4 I4 22 1 59.5 165 SÍ
## 5 I5 23 1 67.3 164 NO
## 6 I6 25 2 78.6 175 NO
Los registros con edad mayor de 22 son
## Identificador Edad Sexo Peso Alt Fuma
## 1 I1 23 1 76.5 165 SÍ
## 2 I2 24 2 81.2 154 NO
## 5 I5 23 1 67.3 164 NO
## 6 I6 25 2 78.6 175 NO
## 7 I7 26 2 67.9 182 NO
## 8 I8 24 2 100.2 165 SÍ
## 11 I11 23 1 65.4 158 NO
## 12 I12 25 2 67.5 183 NO
## 13 I13 26 2 87.4 184 SÍ
## 14 I14 24 2 99.7 164 SÍ
## 17 I17 25 1 65.4 182 NO
## 18 I18 26 2 73.7 179 NO
## 19 I19 24 2 85.1 165 SÍ
## 21 I21 25 1 54.8 183 SÍ
## 22 I22 27 2 103.4 184 NO
## 23 I23 26 1 65.8 189 SÍ
## 25 I25 29 2 85.0 175 SÍ
El elemento es 79.3.
Subset_EdadInferior27_SinAlt_E7_C <- subset(Trat_Pulmon,Trat_Pulmon$Edad<27, select =- c(Alt))
print(Subset_EdadInferior27_SinAlt_E7_C)
## Identificador Edad Sexo Peso Fuma
## 1 I1 23 1 76.5 SÍ
## 2 I2 24 2 81.2 NO
## 3 I3 21 1 79.3 SÍ
## 4 I4 22 1 59.5 SÍ
## 5 I5 23 1 67.3 NO
## 6 I6 25 2 78.6 NO
## 7 I7 26 2 67.9 NO
## 8 I8 24 2 100.2 SÍ
## 9 I9 21 1 97.8 SÍ
## 10 I10 22 2 56.4 SÍ
## 11 I11 23 1 65.4 NO
## 12 I12 25 2 67.5 NO
## 13 I13 26 2 87.4 SÍ
## 14 I14 24 2 99.7 SÍ
## 15 I15 22 1 87.6 SÍ
## 16 I16 21 1 93.4 SÍ
## 17 I17 25 1 65.4 NO
## 18 I18 26 2 73.7 NO
## 19 I19 24 2 85.1 SÍ
## 20 I20 21 2 61.2 SÍ
## 21 I21 25 1 54.8 SÍ
## 23 I23 26 1 65.8 SÍ
## 24 I24 22 1 71.7 NO
Incorporad el dataset ChickWeight que contiene información sobre el peso de 578 pollitos en gramos (weight), el tiempo desde la medición al nacer (Time), una variable identificadora de cada pollito (Chick) a partir del rango de peso y una variable factor con el tipo de dieta experimental que cada pollito recibió (Diet).
Para más información sobre ChickWeight: https://rdrr.io/r/datasets/ChickWeight.html
plot(ChickWeight$weight,main="Gráfico de Dispersión del Peso de los Pollitos (gm)", ylab="Peso Pollitos (gm)")
boxplot(ChickWeight$Time,main="Gráfico de Caja de Tiempo (días)", horizontal = TRUE, xlab="Tiempo (días)")
A partir del conjunto de datos anorexia del paquete MASS, cread otro
data frame que se llame anorexia_treat_df formado por Treat y por un
vector nuevo calculado a partir de la diferencia Prewt-Postwt.
De esta manera, nos quedará un data frame que contenga el tipo de tratamiento y el valor del peso ganado o perdido después de haber realizado el tratamiento.
Seleccionad aquellos individuos que han ganado peso después del
tratamiento y cread un nuevo conjunto llamado anorexia_treat_C_df que
contenga solo los datos de aquellos que han seguido el tratamiento
«Cont» y que han ganado peso después del tratamiento.
Recuperamos los datos del paquete
Nuevo dataframe de Tratamiento y Peso Ganado y enseñamos
cabecera
anorexia_treat_df<- data.frame(anorexia$Treat,anorexia$Postwt-anorexia$Prewt)
colnames(anorexia_treat_df) <- c("Treatment", "Gained Weight")
head(anorexia_treat_df)
## Treatment Gained Weight
## 1 Cont -0.5
## 2 Cont -9.3
## 3 Cont -5.4
## 4 Cont 12.3
## 5 Cont -2.0
## 6 Cont -10.2
Selecionamos los que han seguido el tratamiento y ganado
peso
anorexia_treat_C_df<- subset(anorexia_treat_df,anorexia_treat_df$Treatment=="Cont"&anorexia_treat_df$`Gained Weight`>0)
head(anorexia_treat_C_df)
## Treatment Gained Weight
## 4 Cont 12.3
## 8 Cont 11.6
## 10 Cont 6.2
## 13 Cont 8.3
## 14 Cont 3.3
## 15 Cont 11.3
Entrad en RPubs y registraros. Crearos un perfil y subid un documento R Markdown. Los prerequisitos son tener instalado R y RStudio (v0.96.230 o más), y el paquete knitr (v0.5 o más).
Pasos que tenéis que seguir para publicar vuestro documento:
Como solución de vuestro ejercicio, copiad el enlace de vuestra página de prueba de RPubs.
Resolved los siguientes apartados:
Variable | Nombre | Caracteristicas |
---|---|---|
Id | Id | carácter |
Edad | Edad | numérica |
Genero | Gene | valores 1 = mujer, 2 = hombre |
Tratamiento | Trat | 3 tipos de tratamiento (A, B y C) |
Peso | Peso | numérica (en kg) |
Estatura | Alt | numérica (en cm) |
b) Buscad información de vuestro conjunto de datos y de vuestras variables.
c) Cread una nueva variable a partir de alguna de las que tengamos. Por ejemplo, podéis calcular el IMC (IMC = peso (kg)/ [estatura (m)]2 e incluid la nueva variable en el conjunto de datos.
d) Cread dos data frames diferenciados para hombres y mujeres con dos nombres diferentes: Df_Hombres y Df_Mujeres.
e) Combinad de nuevo los dos ficheros anteriores y cread el primero de nuevo con el comando rbind().
Cread un conjunto de datos
Creamos una tabla vacia
Variables = c("Id","Edad","Gene","Trat","Peso","Alt")
ConjuntoDatosInventados<- data.frame(matrix(nrow = 30, ncol = length(Variables)))
colnames(ConjuntoDatosInventados) = Variables
head(ConjuntoDatosInventados)
## Id Edad Gene Trat Peso Alt
## 1 NA NA NA NA NA NA
## 2 NA NA NA NA NA NA
## 3 NA NA NA NA NA NA
## 4 NA NA NA NA NA NA
## 5 NA NA NA NA NA NA
## 6 NA NA NA NA NA NA
Creamos dato falso para cada variable
ConjuntoDatosInventados$Id <- 1:nrow(ConjuntoDatosInventados)
ConjuntoDatosInventados$Gene <- ifelse(ConjuntoDatosInventados$Id<=15, 1, 2)
ConjuntoDatosInventados$Edad <- c(sample(18 : 65, size = 30, replace = F))
ConjuntoDatosInventados$Peso <- c(sample(55 : 95, size = 30, replace = F))
ConjuntoDatosInventados$Alt <- c(sample(155 : 175, size = 30, replace = T))
ConjuntoDatosInventados$Trat <- ifelse(ConjuntoDatosInventados$Id<=10, "A", ifelse(ConjuntoDatosInventados$Id>=20, "C", "B"))
print(ConjuntoDatosInventados)
## Id Edad Gene Trat Peso Alt
## 1 1 37 1 A 95 171
## 2 2 26 1 A 81 155
## 3 3 42 1 A 57 172
## 4 4 27 1 A 67 172
## 5 5 54 1 A 56 157
## 6 6 43 1 A 85 170
## 7 7 18 1 A 87 167
## 8 8 21 1 A 72 157
## 9 9 22 1 A 58 157
## 10 10 44 1 A 77 157
## 11 11 57 1 B 76 167
## 12 12 28 1 B 74 167
## 13 13 30 1 B 78 167
## 14 14 64 1 B 82 161
## 15 15 52 1 B 60 157
## 16 16 33 2 B 64 171
## 17 17 61 2 B 88 162
## 18 18 53 2 B 68 164
## 19 19 20 2 B 83 163
## 20 20 25 2 C 91 158
## 21 21 59 2 C 66 157
## 22 22 35 2 C 62 175
## 23 23 62 2 C 90 164
## 24 24 46 2 C 55 170
## 25 25 60 2 C 69 155
## 26 26 58 2 C 75 166
## 27 27 24 2 C 61 156
## 28 28 45 2 C 59 160
## 29 29 63 2 C 65 162
## 30 30 23 2 C 94 173
## 'data.frame': 30 obs. of 6 variables:
## $ Id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Edad: int 37 26 42 27 54 43 18 21 22 44 ...
## $ Gene: num 1 1 1 1 1 1 1 1 1 1 ...
## $ Trat: chr "A" "A" "A" "A" ...
## $ Peso: int 95 81 57 67 56 85 87 72 58 77 ...
## $ Alt : int 171 155 172 172 157 170 167 157 157 157 ...
## Id Edad Gene Trat
## Min. : 1.00 Min. :18.00 Min. :1.0 Length:30
## 1st Qu.: 8.25 1st Qu.:26.25 1st Qu.:1.0 Class :character
## Median :15.50 Median :42.50 Median :1.5 Mode :character
## Mean :15.50 Mean :41.07 Mean :1.5
## 3rd Qu.:22.75 3rd Qu.:56.25 3rd Qu.:2.0
## Max. :30.00 Max. :64.00 Max. :2.0
## Peso Alt
## Min. :55.00 Min. :155.0
## 1st Qu.:62.50 1st Qu.:157.0
## Median :73.00 Median :163.5
## Mean :73.17 Mean :163.7
## 3rd Qu.:82.75 3rd Qu.:169.2
## Max. :95.00 Max. :175.0
ConjuntoDatosInventados$IMC<- round(ConjuntoDatosInventados$Peso / (ConjuntoDatosInventados$Alt/100)^2, digits=2)
print(ConjuntoDatosInventados)
## Id Edad Gene Trat Peso Alt IMC
## 1 1 37 1 A 95 171 32.49
## 2 2 26 1 A 81 155 33.71
## 3 3 42 1 A 57 172 19.27
## 4 4 27 1 A 67 172 22.65
## 5 5 54 1 A 56 157 22.72
## 6 6 43 1 A 85 170 29.41
## 7 7 18 1 A 87 167 31.20
## 8 8 21 1 A 72 157 29.21
## 9 9 22 1 A 58 157 23.53
## 10 10 44 1 A 77 157 31.24
## 11 11 57 1 B 76 167 27.25
## 12 12 28 1 B 74 167 26.53
## 13 13 30 1 B 78 167 27.97
## 14 14 64 1 B 82 161 31.63
## 15 15 52 1 B 60 157 24.34
## 16 16 33 2 B 64 171 21.89
## 17 17 61 2 B 88 162 33.53
## 18 18 53 2 B 68 164 25.28
## 19 19 20 2 B 83 163 31.24
## 20 20 25 2 C 91 158 36.45
## 21 21 59 2 C 66 157 26.78
## 22 22 35 2 C 62 175 20.24
## 23 23 62 2 C 90 164 33.46
## 24 24 46 2 C 55 170 19.03
## 25 25 60 2 C 69 155 28.72
## 26 26 58 2 C 75 166 27.22
## 27 27 24 2 C 61 156 25.07
## 28 28 45 2 C 59 160 23.05
## 29 29 63 2 C 65 162 24.77
## 30 30 23 2 C 94 173 31.41
Df_Mujeres<- subset(ConjuntoDatosInventados,ConjuntoDatosInventados$Gene==1)
Df_Hombres<-subset(ConjuntoDatosInventados,ConjuntoDatosInventados$Gene==2)
print(Df_Mujeres)
## Id Edad Gene Trat Peso Alt IMC
## 1 1 37 1 A 95 171 32.49
## 2 2 26 1 A 81 155 33.71
## 3 3 42 1 A 57 172 19.27
## 4 4 27 1 A 67 172 22.65
## 5 5 54 1 A 56 157 22.72
## 6 6 43 1 A 85 170 29.41
## 7 7 18 1 A 87 167 31.20
## 8 8 21 1 A 72 157 29.21
## 9 9 22 1 A 58 157 23.53
## 10 10 44 1 A 77 157 31.24
## 11 11 57 1 B 76 167 27.25
## 12 12 28 1 B 74 167 26.53
## 13 13 30 1 B 78 167 27.97
## 14 14 64 1 B 82 161 31.63
## 15 15 52 1 B 60 157 24.34
## Id Edad Gene Trat Peso Alt IMC
## 16 16 33 2 B 64 171 21.89
## 17 17 61 2 B 88 162 33.53
## 18 18 53 2 B 68 164 25.28
## 19 19 20 2 B 83 163 31.24
## 20 20 25 2 C 91 158 36.45
## 21 21 59 2 C 66 157 26.78
## 22 22 35 2 C 62 175 20.24
## 23 23 62 2 C 90 164 33.46
## 24 24 46 2 C 55 170 19.03
## 25 25 60 2 C 69 155 28.72
## 26 26 58 2 C 75 166 27.22
## 27 27 24 2 C 61 156 25.07
## 28 28 45 2 C 59 160 23.05
## 29 29 63 2 C 65 162 24.77
## 30 30 23 2 C 94 173 31.41
## Id Edad Gene Trat Peso Alt IMC
## 1 1 37 1 A 95 171 32.49
## 2 2 26 1 A 81 155 33.71
## 3 3 42 1 A 57 172 19.27
## 4 4 27 1 A 67 172 22.65
## 5 5 54 1 A 56 157 22.72
## 6 6 43 1 A 85 170 29.41
## 7 7 18 1 A 87 167 31.20
## 8 8 21 1 A 72 157 29.21
## 9 9 22 1 A 58 157 23.53
## 10 10 44 1 A 77 157 31.24
## 11 11 57 1 B 76 167 27.25
## 12 12 28 1 B 74 167 26.53
## 13 13 30 1 B 78 167 27.97
## 14 14 64 1 B 82 161 31.63
## 15 15 52 1 B 60 157 24.34
## 16 16 33 2 B 64 171 21.89
## 17 17 61 2 B 88 162 33.53
## 18 18 53 2 B 68 164 25.28
## 19 19 20 2 B 83 163 31.24
## 20 20 25 2 C 91 158 36.45
## 21 21 59 2 C 66 157 26.78
## 22 22 35 2 C 62 175 20.24
## 23 23 62 2 C 90 164 33.46
## 24 24 46 2 C 55 170 19.03
## 25 25 60 2 C 69 155 28.72
## 26 26 58 2 C 75 166 27.22
## 27 27 24 2 C 61 156 25.07
## 28 28 45 2 C 59 160 23.05
## 29 29 63 2 C 65 162 24.77
## 30 30 23 2 C 94 173 31.41