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.

Asumimos que los paquetes están ya instalados para el ejercicio

library(MASS)
## Warning: package 'MASS' was built under R version 4.4.3
library(survival)
## Warning: package 'survival' was built under R version 4.4.3

Para buscar información sobre Rcmdr:

??Rcmdr
## starting httpd help server ... done

Ejercicio 2

a)

Importad un archivo de texto y buscad un summary() de tres variables que escojáis.

library(readr)
library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3

archivo_texto <- read.table(file=“C:/Users/Camila Reeb/Downloads/players_list_foa.txt”, header = TRUE, sep = ” “) Da error. Ampliaremos en cómo resolver esto. Podríamos importarlo con la función import dataset. Tampoco da bien. Creo que el problema es del dataset porque no tiene bien delimitados los valores por comas o espacios u otro caracter.

b)

Importad un archivo «.csv» y buscad un fivenum() de dos variables que os parezcan relevantes para el estudio.

titanic <- read.csv("C:/Users/Camila Reeb/Downloads/titanic.csv")
fivenum(titanic$Age)
## [1]  0.42 20.00 28.00 38.00 80.00
fivenum(titanic$Fare)
## [1]   0.0000   7.9104  14.4542  31.0000 512.3292

En este fichero es difícil porque no hay muchas variables numéricas, solo la edad y la tarifa que pagaron, por eso solo puse 2 variables.

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.

# Cargamos paquete dplyr
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Attaching package: '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
# Vemos los tipos de datos en el dataframe, lo podemos ver de dos formas

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 ...
glimpse(anorexia)
## Rows: 72
## Columns: 3
## $ Treat  <fct> Cont, Cont, Cont, Cont, Cont, Cont, Cont, Cont, Cont, Cont, Con…
## $ Prewt  <dbl> 80.7, 89.4, 91.8, 74.0, 78.1, 88.3, 87.3, 75.1, 80.6, 78.4, 77.…
## $ Postwt <dbl> 80.2, 80.1, 86.4, 86.3, 76.1, 78.1, 75.1, 86.7, 73.5, 84.6, 77.…
# Comprobamos si hay NA or NULL
is.na(anorexia)
##    Treat Prewt Postwt
## 1  FALSE FALSE  FALSE
## 2  FALSE FALSE  FALSE
## 3  FALSE FALSE  FALSE
## 4  FALSE FALSE  FALSE
## 5  FALSE FALSE  FALSE
## 6  FALSE FALSE  FALSE
## 7  FALSE FALSE  FALSE
## 8  FALSE FALSE  FALSE
## 9  FALSE FALSE  FALSE
## 10 FALSE FALSE  FALSE
## 11 FALSE FALSE  FALSE
## 12 FALSE FALSE  FALSE
## 13 FALSE FALSE  FALSE
## 14 FALSE FALSE  FALSE
## 15 FALSE FALSE  FALSE
## 16 FALSE FALSE  FALSE
## 17 FALSE FALSE  FALSE
## 18 FALSE FALSE  FALSE
## 19 FALSE FALSE  FALSE
## 20 FALSE FALSE  FALSE
## 21 FALSE FALSE  FALSE
## 22 FALSE FALSE  FALSE
## 23 FALSE FALSE  FALSE
## 24 FALSE FALSE  FALSE
## 25 FALSE FALSE  FALSE
## 26 FALSE FALSE  FALSE
## 27 FALSE FALSE  FALSE
## 28 FALSE FALSE  FALSE
## 29 FALSE FALSE  FALSE
## 30 FALSE FALSE  FALSE
## 31 FALSE FALSE  FALSE
## 32 FALSE FALSE  FALSE
## 33 FALSE FALSE  FALSE
## 34 FALSE FALSE  FALSE
## 35 FALSE FALSE  FALSE
## 36 FALSE FALSE  FALSE
## 37 FALSE FALSE  FALSE
## 38 FALSE FALSE  FALSE
## 39 FALSE FALSE  FALSE
## 40 FALSE FALSE  FALSE
## 41 FALSE FALSE  FALSE
## 42 FALSE FALSE  FALSE
## 43 FALSE FALSE  FALSE
## 44 FALSE FALSE  FALSE
## 45 FALSE FALSE  FALSE
## 46 FALSE FALSE  FALSE
## 47 FALSE FALSE  FALSE
## 48 FALSE FALSE  FALSE
## 49 FALSE FALSE  FALSE
## 50 FALSE FALSE  FALSE
## 51 FALSE FALSE  FALSE
## 52 FALSE FALSE  FALSE
## 53 FALSE FALSE  FALSE
## 54 FALSE FALSE  FALSE
## 55 FALSE FALSE  FALSE
## 56 FALSE FALSE  FALSE
## 57 FALSE FALSE  FALSE
## 58 FALSE FALSE  FALSE
## 59 FALSE FALSE  FALSE
## 60 FALSE FALSE  FALSE
## 61 FALSE FALSE  FALSE
## 62 FALSE FALSE  FALSE
## 63 FALSE FALSE  FALSE
## 64 FALSE FALSE  FALSE
## 65 FALSE FALSE  FALSE
## 66 FALSE FALSE  FALSE
## 67 FALSE FALSE  FALSE
## 68 FALSE FALSE  FALSE
## 69 FALSE FALSE  FALSE
## 70 FALSE FALSE  FALSE
## 71 FALSE FALSE  FALSE
## 72 FALSE FALSE  FALSE
is.null(anorexia)
## [1] FALSE

El dataset consta de 72 observaciones o variables de 3 columnas: Treat, de tipo factor, Prewt de tipo numérico y Postwt de tipo numérico. No hay valores NA ni NULL.

Para la variable Treat, transformad los valores «CBT», «Cont» y «FT» en «Cogn Beh Tr», «Contr» y «Fam Tr», respectivamente.

levels(anorexia$Treat)[levels(anorexia$Treat) == "CBT"] <- "Cogn Beh Tr"
levels(anorexia$Treat)[levels(anorexia$Treat) == "Cont"] <- "Contr"
levels(anorexia$Treat)[levels(anorexia$Treat) == "FT"] <- "Fam Tr"

Los corchetes nos permiten seleccionar grupos de casos o grupos de variables para realizar determinados procedimientos. Es decir, estamos diciendo que, en los niveles que hay dentro de la variable Treat de dataset anorexia, seleccionamos los que son == o exactamente igual a tal valor, y lo transformamos.

Ejercicio 4:

a)

write.csv(biopsy, file="biopsy.csv") 

Esto crea un archivo csv con el nombre biopsy en la carpeta del working directory. Podemos saber cual es el wd con el comando getwd().

b)

# Archivo de texto de tipo .txt

write.table(Melanoma, "C:/Users/Camila Reeb/Documents/LAB1/melanoma.txt", sep= "")

# Archivo de tipo .csv
write.csv(Melanoma, file = "C:/Users/Camila Reeb/Documents/LAB1/melanoma.csv")

# Archivo de tipo .xlsx
library(openxlsx)
## Warning: package 'openxlsx' was built under R version 4.4.3
write.xlsx(Melanoma, "C:/Users/Camila Reeb/Documents/LAB1/melanoma.xlsx")

Adjunto captura de la localización en dicha carpeta

c)

resumen <- summary(Melanoma$age)
capture.output(resumen, file = "resumen.doc")

Atención que acá se guardó en la carpeta que le dije antes, la de LAB 1. El wd se cambió a esa carpeta. Para cambiar el wd podemos poner setwd(“ruta que queramos”)

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.

Voy a usar el menú de importación de RStudio y luego copiaré el código

setwd("C:/Users/Camila Reeb/Documents")
library(readr)
wdbc <- read_csv("wdbc.csv", col_names = FALSE)
## Rows: 569 Columns: 32
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (1): X2
## dbl (31): X1, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16,...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

##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?

birthwt
max(birthwt$age)
## [1] 45

45 años

b)

¿Cuál es la edad mínima de las madres del conjunto de datos?

min(birthwt$age)
## [1] 14

14 años

###c) ¿Cuál es el rango de edad de las madres?

range(birthwt$age)
## [1] 14 45

14 a 45 años

d)

¿Fumaba la madre cuyo recién nacido era el de menor peso?

birthwt$smoke[which.min(birthwt$bwt)]
## [1] 1

El valor que nos arroja es 1, que al tratarse los niveles de 1 y 0, podríamos asumir que 1 se trata de que sí fumaba la madre, aunque no lo podemos establecer con certeza al no tener las asociaciones entre los numeros y el si/no.

e)

¿Cuánto pesó el recién nacido cuya madre tenía la edad máxima?

birthwt$bwt[which.max(birthwt$age)]
## [1] 4990

Pesó 4990 gramos.

f)

Listad los pesos de los recién nacidos, cuyas madres visitarán menos de dos veces al médico durante el primer trimestre.

birthwt$bwt[birthwt$ftv <2]
##   [1] 2523 2557 2600 2622 2637 2637 2663 2665 2722 2733 2751 2769 2769 2778 2807
##  [16] 2821 2836 2863 2877 2906 2920 2920 2920 2948 2948 2977 2977 2922 3033 3062
##  [31] 3062 3062 3062 3090 3090 3100 3104 3132 3175 3175 3203 3203 3203 3225 3225
##  [46] 3232 3234 3260 3274 3317 3317 3331 3374 3374 3402 3416 3444 3459 3460 3473
##  [61] 3544 3487 3544 3572 3572 3586 3600 3614 3614 3629 3637 3643 3651 3651 3651
##  [76] 3651 3699 3728 3756 3770 3770 3770 3790 3799 3827 3884 3912 3940 3941 3941
##  [91] 3969 3997 3997 4054 4054 4111 4174 4238 4593 4990  709 1135 1330 1474 1588
## [106] 1588 1701 1729 1790 1818 1885 1893 1899 1928 1936 1970 2055 2055 2084 2084
## [121] 2100 2125 2187 2187 2211 2225 2240 2240 2282 2296 2296 2325 2353 2353 2367
## [136] 2381 2381 2381 2410 2410 2410 2424 2442 2466 2466 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.

matriz <- cbind(anorexia$Prewt, anorexia$Postwt)

Intenté usar la función matrix () pero al esperar un solo vector, no lo pude lograr, y encontré esta función que también devuelve una matriz.

Ejercicio 7

Copia 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)
Trat_Pulmon

a)

Seleccionad los registros con edad>22.

mayores_22 <- Trat_Pulmon[Trat_Pulmon$Edad >22, ]

En este caso, luego de seleccionar las filas donde la edad es mayor a 22, ponemos una coma para que se entienda que es solo un filtro de filas y que las columnas no se deben filtrar sino que debe devolver todas.

También lo podríamos hacer con dplyr

menores_22_dplyr <- Trat_Pulmon %>% filter(Trat_Pulmon$Edad >22)
View(menores_22_dplyr)

###b) Seleccionad el elemento 3 de la columna 4 del conjunto de datos

Trat_Pulmon[3,4]
## [1] 79.3

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.

menor_27_sin_alt <- subset(Trat_Pulmon, Edad < 27, select = -c(Alt))

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.

ChickWeight

b)

Generad un gráfico de dispersión de la variable weight.

plot(ChickWeight$weight)

c)

Cread un diagrama de caja con la variable Time.

boxplot(ChickWeight$Time, ylab= "Días desde el nacimiento")

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.

diferencia_prewt_postwt <- anorexia$Prewt - anorexia$Postwt
anorexia_treat_df <- data.frame(Treat = anorexia$Treat, Diferencia = diferencia_prewt_postwt)
anorexia_treat_C_df <- subset(anorexia_treat_df, Treat == "Contr" & Diferencia > 0)

Nota: el Treatment fue seleccionado como “Contr” y no como “Cont” porque este valor fue modificado en una consigna anterior.

Ejercicio 10

Publicación del R Markdown.