Introducción

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

knitr::opts_knit$set(root.dir = "/Users/catarinaalmeida/Desktop/LAB1")
getwd()
## [1] "/Users/catarinaalmeida/Desktop/LAB1"

Ejercicios


Ejercicio 1

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.


Solución




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

Ejercicio 2

  • Importad un archivo de texto y buscad un summary() de tres variables que escojáis
  • Importad un archivo «.csv» y buscad un fivenum() de dos variables que os parezcan relevantes para el estudio

Solución


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
summary(FicheroImportado1_E2)
##      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



  • Analizamos la variable MLY.SNWD.AVGNDS.GE002WI que corresponde a las médias de número de días al mes con nieve.
fivenum(FicheroImportado2_E2$MLY.SNWD.AVGNDS.GE002WI)
## [1] 0.00 0.00 0.00 2.15 6.40
  • Por último, realizamos el análisis a la variable MLY-TMIN-NORMAL que corresponde a las médias de temperatura minimas del mes (medida en Fahrenheit).
fivenum(FicheroImportado2_E2$MLY.TMIN.NORMAL)
## [1] 28.60 35.45 49.65 65.05 71.90

Ejercicio 3

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:

  • los tipos de datos que contiene
  • y comprobad si existen valores NA y NULL.
  • Para la variable Treat, transformad los valores «CBT», «Cont» y «FT» en «Cogn Beh Tr», «Contr» y «Fam Tr», respectivamente.


Solución




Recogemos el dato

library(MASS)
data(anorexia)


Analizamos tipologia del dato

str(anorexia)
## '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

sum(is.na(anorexia))
## [1] 0


Y si hay NULOS

sum(is.null(anorexia))
## [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"

Ejercicio 4

  • A. Exportad los datos biopsy del paquete MASS a un archivo «.csv.»
  • B. Exportad los datos melanoma del paquete MASS a archivos de tres diferentes formatos y comprobad que se han creado los diferentes archivos en los formatos y las rutas especificados. Podéis generar una captura de pantalla de su ubicación en la carpeta.
  • C. Generad un resumen (summary) de la variable age de melanoma y guardad la salida que os aparece en un documento .doc
  • D. Buscad un data frame en algún repositorio de datos de Biomedicina, descargad un conjunto de datos en «.csv» e importad este fichero a un documento R Markdown usando el código o el menú de importación de RStudio.


Solución


  • A. Exportamos el set biopsy a un archivo del tipo .csv
library(MASS)
data(biopsy)
write.csv(biopsy, file="/Users/catarinaalmeida/Desktop/LAB1/biopsy_E4.csv")


  • B.Exportamos los datos del paquete Melanoma en 3 formatos (csv, txt y xlsx)
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")



  • C. Resumen de Age y resultado guardado en un doc
summary(Melanoma$age)
##    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")




  • D. Importación de un dataframe de Biomedicina

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

Ejercicio 5

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:

  • A. ¿Cuál es la edad máxima de las madres del conjunto de datos?
  • B. ¿Cuál es la edad mínima de las madres del conjunto de datos?
  • C. ¿Cuál es el rango de edad de las madres?
  • D. ¿Fumaba la madre cuyo recién nacido era el de menor peso?
  • E. ¿Cuánto pesó el recién nacido cuya madre tenía la edad máxima?
  • F. Listad los pesos de los recién nacidos, cuyas madres visitarán menos de dos veces al médico durante el primer trimestre.


Solución


Cargamos el dataset

data(birthwt)
head(birthwt)
##    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

 

  • A. Edad máxima
Edad_Maxima_E5_A <- max(birthwt$age,na.rm = FALSE)

La edad máxima de las madres del conjunto de datos es 45.

  • B. Edad minima
Edad_Minima_E5_B <- min(birthwt$age,na.rm = FALSE)

La edad minima de las madres del conjunto de datos es 14.

  • C. Rango de edad de las madres
Edad_Rango_E5_C <- Edad_Maxima_E5_A-Edad_Minima_E5_B

El rango de edades de las madres del conjunto de datos es 31.

  • D. Fumaba la madre del recien nascido menor peso
MenorPesoBebe <- min(birthwt$bwt)
Fumar_BebeMenorPeso_E5_D <- birthwt$smoke[birthwt$bwt == MenorPesoBebe]

La madre del bebe con menor peso es Fumadora.

  • E. Edad de la madre del recien nascido mayor peso
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.

  • F. Edad de la madre del recien nascido mayor peso
PesoBebes_Menos2Visitas_E5_F <- birthwt$bwt[birthwt$ftv<=2]

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.

Ejercicio 6

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.

Solució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

Ejercicio 7

  • A. Seleccionad los registros con edad > 22.
  • B. Seleccionad el elemento 3 de la columna 4 del conjunto de datos (contando el identificador).
  • C. Usad el comando subset() para seleccionar todas las filas que tienen una edad menor que 27 años y sin incluir la columna Alt.


Solución

  • Cargamos dataframe y validamos estructura
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
  • A. Registros edad mayor que 22
EdadMayor22_E7_A <- subset(Trat_Pulmon,Trat_Pulmon$Edad>22)

Los registros con edad mayor de 22 son

print(EdadMayor22_E7_A)
##    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Í


  • B. Elemento 3 de la columna 4
Elemento_E7_B <- Trat_Pulmon[3,4]

El elemento es 79.3.


  • C. Subset Edad <27, y quitar columna Alt
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


Ejercicio 8

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).

  • a) Incorporad el conjunto de datos ChickWeight del paquete datasets a vuestro entorno de trabajo.
  • b) Generad un gráfico de dispersión de la variable weight.
  • c) Cread un diagrama de caja con la variable Time.

Para más información sobre ChickWeight: https://rdrr.io/r/datasets/ChickWeight.html


Solución

  • A. Incorporar ChickWeight
library(datasets)
data("ChickWeight")


  • B. Gráfico de dispersion del peso
plot(ChickWeight$weight,main="Gráfico de Dispersión del Peso de los Pollitos (gm)", ylab="Peso Pollitos (gm)")


  • C. Gráfico de caja del tiempo
boxplot(ChickWeight$Time,main="Gráfico de Caja de Tiempo (días)", horizontal = TRUE, xlab="Tiempo (días)")


Ejercicio 9


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.

Solución


Recuperamos los datos del paquete

library(MASS)
data("anorexia")


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

Ejercicio 10

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:

  1. En RStudio, cread un documento R Markdown.
  2. Generad el documento con Knit.
  3. En la ventana de previsualización, clicad el botón de publicar.

Como solución de vuestro ejercicio, copiad el enlace de vuestra página de prueba de RPubs.


Solución





Caso Práctico

Resolved los siguientes apartados:

  • a) Cread un conjunto de datos inventado con R. Debe contener treinta observaciones (quince para hombres y quince para mujeres) para seis variables con estas características:
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().


Solución



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
  • B. Información conjunto de datos
str(ConjuntoDatosInventados)
## '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 ...
summary(ConjuntoDatosInventados)
##        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
  • C. IMC
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


  • D. Nuevos Dataframes para Hombres y Mujeres
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
print(Df_Hombres)
##    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


  • E. Unir de nuevo los dataframes
rbind(Df_Mujeres,Df_Hombres)
##    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