Ejercicios y casos prácticos con R

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

library()

En mi caso tengo varios paquetes ya que estuve trabajando tiempo en R

Para mi caso como tengo las ultimas versiones de R, me indica que ambos paquetes ya no los tiene para la versión de R, en el caso de Survival, igualmente hay que ver si se tienen los paquetes

library(MASS)
library(Survival)
## Error in library(Survival): no hay paquete llamado 'Survival'

El caso de la librería Survival no se tiene disponible es en minúscula, así como lo indicaron mis compañeros en el grupo.

library(survival)

Por último veamos la información acerca del paquete Rcmdr

#??Rcmdr

Me envía a la parte de ayuda de R CMD command de los cuales manda como ejemplo lo siguiente

#rcmd(
#  cmd,
#  cmdargs = character(),
#  libpath = .libPaths(),
#  repos = default_repos(),
#  stdout = NULL,
#  stderr = NULL,
#  poll_connection = TRUE,
#  echo = FALSE,
#  show = FALSE,
#  callback = NULL,
#  block_callback = NULL,
#  spinner = show && interactive(),
#  system_profile = FALSE,
#  user_profile = "project",
#  env = rcmd_safe_env(),
#  timeout = Inf,
#  wd = ".",
#  fail_on_status = FALSE
#)

Código para hacer correr R Comander.

Ejercicio 2:

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

Solución

Importar el archivo de texto

FinancialSample <- read.csv("FinancialSample.txt", header=FALSE, sep=";")

Veamos la estructura de los datos

str(FinancialSample)
## 'data.frame':    700 obs. of  16 variables:
##  $ V1 : chr  "Government" "Government" "Midmarket" "Midmarket" ...
##  $ V2 : chr  "Canada" "Germany" "France" "Germany" ...
##  $ V3 : chr  " Carretera " " Carretera " " Carretera " " Carretera " ...
##  $ V4 : chr  " None " " None " " None " " None " ...
##  $ V5 : num  1618 1321 2178 888 2470 ...
##  $ V6 : chr  " $3.00 " " $3.00 " " $3.00 " " $3.00 " ...
##  $ V7 : chr  " $20.00 " " $20.00 " " $15.00 " " $15.00 " ...
##  $ V8 : chr  " $32,370.00 " " $26,420.00 " " $32,670.00 " " $13,320.00 " ...
##  $ V9 : chr  " $-   " " $-   " " $-   " " $-   " ...
##  $ V10: chr  " $32,370.00 " " $26,420.00 " " $32,670.00 " " $13,320.00 " ...
##  $ V11: chr  " $16,185.00 " " $13,210.00 " " $21,780.00 " " $8,880.00 " ...
##  $ V12: chr  " $16,185.00 " " $13,210.00 " " $10,890.00 " " $4,440.00 " ...
##  $ V13: chr  "1/01/2014" "1/01/2014" "1/06/2014" "1/06/2014" ...
##  $ V14: int  1 1 6 6 6 12 3 6 6 6 ...
##  $ V15: chr  " January " " January " " June " " June " ...
##  $ V16: int  2014 2014 2014 2014 2014 2014 2014 2014 2014 2014 ...

Seleccionamos solo tres variables (V1, V2 y V5), las tres primeras

seleccion <- FinancialSample[,c(1,2,5)]

Ahora la función summary()

summary(seleccion)
##       V1                 V2                  V5      
##  Length:700         Length:700         Min.   : 200  
##  Class :character   Class :character   1st Qu.: 905  
##  Mode  :character   Mode  :character   Median :1542  
##                                        Mean   :1608  
##                                        3rd Qu.:2229  
##                                        Max.   :4492

Ahora importamos el archivo csv

MarketingDirecto <- read.csv("MarketingDirecto.csv")

Veamos la estructura de los datos

str(MarketingDirecto)
## 'data.frame':    1000 obs. of  10 variables:
##  $ Edad     : chr  "Adulta" "Media" "Joven" "Media" ...
##  $ Genero   : chr  "Femenino" "Masculino" "Femenino" "Masculino" ...
##  $ Vivienda : chr  "Propia" "Alquilada" "Alquilada" "Propia" ...
##  $ Ecivil   : chr  "Soltero" "Soltero" "Soltero" "Casado" ...
##  $ Ubicacion: chr  "Lejos" "Cerca" "Cerca" "Cerca" ...
##  $ Salario  : int  47500 63600 13500 85600 68400 30400 48100 68400 51900 80700 ...
##  $ Hijos    : int  0 0 0 1 0 0 0 0 3 0 ...
##  $ Historial: chr  "Alto" "Alto" "Bajo" "Alto" ...
##  $ Catalogos: int  6 6 18 18 12 6 12 18 6 18 ...
##  $ Monto    : int  755 1318 296 2436 1304 495 782 1155 158 3034 ...

Ahora seleccionemos dos variables (Salario y Monto) y buscamos un fivenum() a las dos variables

fivenum(MarketingDirecto$Salario)
## [1]  10100  29850  53700  77050 168800
fivenum(MarketingDirecto$Monto)
## [1]   38.0  487.5  962.0 1689.0 6217.0

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

Llamamos a la libreria

library(MASS)

Ahora cargamos los datos de anorexia

data("anorexia")

Veamos los primeros registros

head(anorexia)

Para ver los tipos de datos usamos la función str(anorexia)

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

Se tienen 72 observaciones en los cuales se dividen en tratamiento, wt previo y wt posterior. Ahora comprobemos cuantos valores na se tienen

colSums(is.na(anorexia))
##  Treat  Prewt Postwt 
##      0      0      0

No se tiene ningún dato vacío, ahora veamos los null

table(is.null(anorexia))
## 
## FALSE 
##     1

Solo se tiene un registro en nulo, por último transformemos la variable Treat sus niveles en diferentes nombres

anorexia$Treat <- factor(anorexia$Treat, levels = c("CBT","Cont","FT"), labels = c("Cogn Beh Tr","Contr","Fam Tr"))
str(anorexia)
## 'data.frame':    72 obs. of  3 variables:
##  $ Treat : Factor w/ 3 levels "Cogn Beh Tr",..: 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 ...
levels(anorexia$Treat)
## [1] "Cogn Beh Tr" "Contr"       "Fam Tr"

Ejercicio 4:

  1. Exportad los datos biopsy del paquete MASS a un archivo .csv
  2. 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.
  3. Generad un resumen summary() de la variable age de melanoma y guardad la salida que os parece en un documento .doc
  4. 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 en R Studio.

Solución

  1. Llamemos el archivo y exportemos en csv
data("biopsy")
head(biopsy)
write.csv(biopsy,"biopsy_csv.csv")
  1. Lo mismo hacemos con melanoma
data("Melanoma")
head(Melanoma)
write.csv(Melanoma, "Melanoma_txt.txt")
write.csv(Melanoma, "Melanoma_csv.csv")
library(openxlsx) #Para guardar como archivo excel
## Warning: package 'openxlsx' was built under R version 4.4.1
write.xlsx(Melanoma, "Melanoma_excel.xlsx")
knitr::include_graphics("img1.png")

  1. Generamos el resumen y lo colocamos en el mismo documento
library(knitr)
summ_age <- summary(Melanoma$age) #Guardamos en una variable
table_sum_age <- as.data.frame(t(summ_age))
kable(table_sum_age, caption = "Resumen de la variable 'age'")
Resumen de la variable ‘age’
Var1 Var2 Freq
A Min. 4.00000
A 1st Qu. 42.00000
A Median 54.00000
A Mean 52.46341
A 3rd Qu. 65.00000
A Max. 95.00000
  1. Importad el archivo winequality.csv del enlace https://archive.ics.uci.edu/dataset/186/wine+quality extraido del link proporcionado https://archive.ics.uci.edu/datasets
winequality.red <- read.csv("winequality-red.csv", sep=";")
winequality.red$Type <- "red"
winequality.white <- read.csv("winequality-white.csv", sep=";")
winequality.white$Type <- "white"

Ahora vamos a unir ambos datasets

winequa <- rbind(winequality.red, winequality.white)
str(winequa)
## 'data.frame':    6497 obs. of  13 variables:
##  $ fixed.acidity       : num  7.4 7.8 7.8 11.2 7.4 7.4 7.9 7.3 7.8 7.5 ...
##  $ volatile.acidity    : num  0.7 0.88 0.76 0.28 0.7 0.66 0.6 0.65 0.58 0.5 ...
##  $ citric.acid         : num  0 0 0.04 0.56 0 0 0.06 0 0.02 0.36 ...
##  $ residual.sugar      : num  1.9 2.6 2.3 1.9 1.9 1.8 1.6 1.2 2 6.1 ...
##  $ chlorides           : num  0.076 0.098 0.092 0.075 0.076 0.075 0.069 0.065 0.073 0.071 ...
##  $ free.sulfur.dioxide : num  11 25 15 17 11 13 15 15 9 17 ...
##  $ total.sulfur.dioxide: num  34 67 54 60 34 40 59 21 18 102 ...
##  $ density             : num  0.998 0.997 0.997 0.998 0.998 ...
##  $ pH                  : num  3.51 3.2 3.26 3.16 3.51 3.51 3.3 3.39 3.36 3.35 ...
##  $ sulphates           : num  0.56 0.68 0.65 0.58 0.56 0.56 0.46 0.47 0.57 0.8 ...
##  $ alcohol             : num  9.4 9.8 9.8 9.8 9.4 9.4 9.4 10 9.5 10.5 ...
##  $ quality             : int  5 5 5 6 5 5 5 7 7 5 ...
##  $ Type                : chr  "red" "red" "red" "red" ...

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:

  1. ¿Cuál es la edad máxima de las madres del conjunto de datos?
  2. ¿Cuál es la edad mínima de las madres del conjunto de datos?
  3. ¿Cuál es el rango de edad de las madres?
  4. ¿Fumaba la madre cuyo recién nacido era el de menor peso?
  5. ¿Cuánto pesó el recién nacido cuya madre tenía la edad máxima?
  6. ¿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

  1. ¿Cuál es la edad máxima de las madres del conjunto de datos?
data("birthwt") #Leer los datos
max(birthwt$age)
## [1] 45
  1. ¿Cuál es la edad mínima de las madres del conjunto de datos?
min(birthwt$age)
## [1] 14
  1. ¿Cuál es el rango de edad de las madres?
max(birthwt$age) - min(birthwt$age)
## [1] 31
  1. ¿Fumaba la madre cuyo recién nacido era el de menor peso?
library(dplyr) #Usar la librería dplyr
## 
## Adjuntando el paquete: 'dplyr'
## The following object is masked from 'package:MASS':
## 
##     select
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
birthwt %>% filter(bwt == min(bwt)) %>% select(smoke) #Si fumo
  1. ¿Cuánto pesó el recién nacido cuya madre tenía la edad máxima?
birthwt %>% filter(age == max(age)) %>% select(bwt)
  1. ¿Listad los pesos de los recién nacidos, cuyas madres visitarán menos de dos veces al médico durante el primer trimestre?
birthwt %>% filter(ftv <= 2) %>% select(bwt)

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

matrix(c(anorexia$Prewt, anorexia$Postwt), ncol = 2)
##       [,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
##  [7,] 87.3  75.1
##  [8,] 75.1  86.7
##  [9,] 80.6  73.5
## [10,] 78.4  84.6
## [11,] 77.6  77.4
## [12,] 88.7  79.5
## [13,] 81.3  89.6
## [14,] 78.1  81.4
## [15,] 70.5  81.8
## [16,] 77.3  77.3
## [17,] 85.2  84.2
## [18,] 86.0  75.4
## [19,] 84.1  79.5
## [20,] 79.7  73.0
## [21,] 85.5  88.3
## [22,] 84.4  84.7
## [23,] 79.6  81.4
## [24,] 77.5  81.2
## [25,] 72.3  88.2
## [26,] 89.0  78.8
## [27,] 80.5  82.2
## [28,] 84.9  85.6
## [29,] 81.5  81.4
## [30,] 82.6  81.9
## [31,] 79.9  76.4
## [32,] 88.7 103.6
## [33,] 94.9  98.4
## [34,] 76.3  93.4
## [35,] 81.0  73.4
## [36,] 80.5  82.1
## [37,] 85.0  96.7
## [38,] 89.2  95.3
## [39,] 81.3  82.4
## [40,] 76.5  72.5
## [41,] 70.0  90.9
## [42,] 80.4  71.3
## [43,] 83.3  85.4
## [44,] 83.0  81.6
## [45,] 87.7  89.1
## [46,] 84.2  83.9
## [47,] 86.4  82.7
## [48,] 76.5  75.7
## [49,] 80.2  82.6
## [50,] 87.8 100.4
## [51,] 83.3  85.2
## [52,] 79.7  83.6
## [53,] 84.5  84.6
## [54,] 80.8  96.2
## [55,] 87.4  86.7
## [56,] 83.8  95.2
## [57,] 83.3  94.3
## [58,] 86.0  91.5
## [59,] 82.5  91.9
## [60,] 86.7 100.3
## [61,] 79.6  76.7
## [62,] 76.9  76.8
## [63,] 94.2 101.6
## [64,] 73.4  94.9
## [65,] 80.5  75.2
## [66,] 81.6  77.8
## [67,] 82.1  95.5
## [68,] 77.6  90.7
## [69,] 83.5  92.5
## [70,] 89.9  93.8
## [71,] 86.0  91.7
## [72,] 87.3  98.0

Ejercicio 7:

Copiad el código siguiente en tu consola para generar un data frame con veinticinco registros y seis variables, y responde a los siguientes apartados:

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) #1 para mujeres y 2 para hombres
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) #altura en cm
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)
  1. Seleccionad los registros con edad > 22.
  2. Seleccionad el elemento 3 de la columna 4 del conjunto de datos (contando el identificador)
  3. 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

  1. Seleccionad los registros con edad > 22.
Trat_Pulmon %>% filter(Edad > 22)
  1. Seleccionad el elemento 3 de la columna 4 del conjunto de datos (contando el identificador)
Trat_Pulmon[3,4]
## [1] 79.3
  1. Usad el comando subset() para seleccionar todas las filas que tienen una edad menor que 27 años y sin incluir la columna Alt
subset(Trat_Pulmon, Edad < 27, select = -c(Alt))

Ejercicio 8:

Incorporad el dataset ChickWeight que contienen 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).

  1. Incorporad el conjunto de datos (ChickWeight) del paquete datasets a vuestro entorno de trabajo.
  2. Generad un gráfico de dispersión de la variable weight.
  3. 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

  1. Incorporad el conjunto de datos (ChickWeight) del paquete datasets a vuestro entorno de trabajo.
library(datasets)
data.frame(ChickWeight)
head(ChickWeight)
  1. Generad un gráfico de dispersión de la variable weight.
plot(ChickWeight$weight, col=blues9, main="Gráfico de dispersión de weight")

  1. Cread un diagrama de caja con la variable Time.
boxplot(ChickWeight$Time, col="green", main="Diagrama de cajas de Time")

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 dataframe 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

Cread la variable de la diferencia

anorexia$dif <- anorexia$Prewt - anorexia$Postwt

Ahora seleccionar la variable Treat y la diferencia

anorexia_treat_df <- anorexia %>% select(Treat, dif)
head(anorexia_treat_df)

Seleccionad a los individuos que ganaron peso después del tratamiento y cread el dataframe

anorexia_treat_C_df <- anorexia %>% filter(Treat == "Contr")
head(anorexia_treat_C_df)

Ejercicio 10:

Entrad en https://rpubs.com/ y registraros. Crearos un perfil y subid un documento R Markdown. Los prerequisitos son tener instalados https://www.r-project.org/ y https://posit.co/, y el paquete knitr.

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

Enlace de la publicación de este trabajo

Caso práctico

Resolved los siguientes apartados

  1. 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 Características
Identificador Id carácter
Edad Edad numérica
Genero Gene 2 valores 1 = mujer, 2 = hombre
Tratamiento Trat Factor. Tres tipos de tratamiento (A, B y C)
Peso Peso numérica (en kg)
Estatura Alt numérica (en cm)
  1. Buscad información de vuestro conjunto de datos y de vuestras variables.

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

  3. Cread dos data frames diferenciados para hombres y mujeres con dos nombres diferentes: Df_Hombres y Df_Mujeres.

  4. Combinad de nuevo los dos ficheros anteriores y cread el primero de nuevo con el comando rbind().

Solución

  1. 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
set.seed(2025) #Semilla para que los datos sean iguales

Creamos las variables

Id <- c("ID1","ID2","ID3","ID4","ID5","ID6","ID7","ID8","ID9","ID10","ID11","ID12","ID13","ID14","ID15","ID16","ID17","ID18","ID19","ID20","ID21","ID22","ID23","ID24","ID25","ID26","ID27","ID28","ID29","ID30")
Edad <- round(rnorm(n = 30, mean = 22, sd = 3),0)
Genero <- rbinom(n = 30, size = 1, prob = 0.5)
Tratamiento <- rbinom(n = 30, size = 2, prob = 0.5)
Peso <- round(rnorm(n = 30, mean = 70, sd = 6),2)
Estatura <- round(rnorm(n = 30, mean = 172, sd = 7),2)
data <- data.frame(Id, Edad, Genero, Tratamiento,
                   Peso, Estatura)
data$Genero <- ifelse(data$Genero == 0, 1,2)
data$Tratamiento <- ifelse(data$Tratamiento == 0, "A",
                           ifelse(data$Tratamiento == 1, "B","C"))
head(data)
  1. Buscad información de vuestro conjunto de datos y de vuestras variables.
data$Genero <- as.factor(data$Genero)
data$Tratamiento <- as.factor(data$Tratamiento)
str(data)
## 'data.frame':    30 obs. of  6 variables:
##  $ Id         : chr  "ID1" "ID2" "ID3" "ID4" ...
##  $ Edad       : num  24 22 24 26 23 22 23 22 21 24 ...
##  $ Genero     : Factor w/ 2 levels "1","2": 1 2 2 1 1 2 2 1 1 1 ...
##  $ Tratamiento: Factor w/ 3 levels "A","B","C": 3 3 2 3 2 2 3 3 2 2 ...
##  $ Peso       : num  73.6 73.8 72.9 78.2 63.1 ...
##  $ Estatura   : num  176 166 184 173 169 ...
summary(data)
##       Id                 Edad      Genero Tratamiento      Peso      
##  Length:30          Min.   :17.0   1:17   A: 6        Min.   :55.30  
##  Class :character   1st Qu.:21.0   2:13   B:12        1st Qu.:64.70  
##  Mode  :character   Median :22.0          C:12        Median :67.58  
##                     Mean   :22.6                      Mean   :69.05  
##                     3rd Qu.:24.0                      3rd Qu.:73.77  
##                     Max.   :31.0                      Max.   :80.30  
##     Estatura    
##  Min.   :158.7  
##  1st Qu.:164.9  
##  Median :170.3  
##  Mean   :170.4  
##  3rd Qu.:174.2  
##  Max.   :184.0
  1. 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.
data$Estatura <- data$Estatura/100

data$IMC <- (data$Peso) / (data$Estatura^2)

Veamos los registros

data$IMC
##  [1] 23.64842 26.89956 21.52413 26.25405 22.09134 20.40362 25.49995 25.91605
##  [9] 29.05308 22.43169 22.21060 22.61272 20.24045 18.60216 25.22801 25.84181
## [17] 25.06343 23.73729 21.56068 20.24197 23.63623 27.60687 24.69934 25.27390
## [25] 23.92997 21.52754 29.82913 21.73353 21.92616 26.43915
  1. Cread dos data frames diferenciados para hombres y mujeres con dos nombres diferentes: Df_Hombres y Df_Mujeres.
Df_Hombres <- data %>% filter(Genero == 2)
Df_Hombres
Df_Mujeres <- data %>% filter(Genero == 1)
Df_Mujeres
  1. Combinad de nuevo los dos ficheros anteriores y cread el primero de nuevo con el comando rbind().
data_bind <- rbind(Df_Hombres, Df_Mujeres)
data_bind