R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

Including Plots

You can also embed plots, for example:

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.

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.

Para ver los paquetes que tenemos instalados en nuestra versión descargada de RStudio, esto lo podemos comprobar en la ventana inferior de la derecha al abrir R. Haciendo clic sobre la pestaña de Packages aparecen todos los paquetes instalados. Esto tambien se puede comprobar mediante el siguiente comando: library() . Este comando hará que se habrá una pestaña con todos los paquetes de R disponibles. Para instalar los paquetes de MASS y Survival, lo escribiremos de la siguiente manera:

install.packages("MASS")
install.packages("Survival")

Para buscar información sobre alguna función en concreto, debemos poner unos interrogantes delante de aquello que queremos buscar. Es decir, en nuestro caso escribiriamos:

??Rcmdr

Esta información también la podemos buscar directamente en la ventana inferior derecha, sobre buscando sobre la pestaña de Help.

Ejercicio 2

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

library(readr)
bodyfat <-read.txt("C:/Users/emmar/Desktop/bodyfat.txt")
View(bodyfat)
head(bodyfat)
names(bodyfat)

summary(bodyfat$Percent)
summary(bodyfat$Height)
summary(bodyfat$Abdomen)

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

library(readr)
COVID <- read_csv("C:/Users/emmar/Desktop/PEC1/COVID19Dataset.csv")
View(COVID)

colnames(COVID) <- c("Count.","TotalCases", "NewCases", "TotalDeaths", "NewDeaths", "TotalRecovered", "NewRecovered", "ActiveCases", "Critical", "TotCases/Pop", "Deaths/Pop", "TotalTests", "Tests/Pop", "Popul.")

fivenum(COVID$NewCases)
fivenum(COVID$TotalDeaths)

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.

En primer lugar, vamos a mostrar los tipos de datos que contiene el conjunto de datos:

library("MASS")
data("anorexia")
head(anorexia)

Para comprobar si existen en el conjunto de datos valores NA y Null, debemos introducir las siguientes instrucciones respectivamente:

table(is.na(anorexia))
table(is.null(anorexia))

Ahora, vamos a transformar los valores. Para la variable Treat, transformamos los valores «CBT», «Cont» y FT en «Cogn Beh Tr», «Contr» y «Fam Tr», respectivamente. Para ello:

Definimos primero lo que queremos hacer en una instrucción y luego mostramos la variable nueva que hemos transformado.

anorexia_F <-factor(anorexia$Treat, levels=c("CBT","Cont","FT"), labels=c("Cogn Beh Tr", "Contr", "Fam Tr"))
anorexia_F

Ejercicio 4

a) Exportad los datos biopsy del paquete MASS a un archivo «.csv.»

library("MASS")
data("biopsy")
head(biopsy)
write.csv(biopsy, file="C:/Users/emmar/Desktop/LAB1_biopsy.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.

library("MASS")
data("melanoma")
write.table("melanoma","C:/Users/emmar/Desktop/LAB1_melanoma.txt")
write.csv("melanoma", file="C:/Users/emmar/Desktop/LAB1_melanoma.csv")
install.packages("xlsx")
library("xlsx")
write.xlsx("melanoma","C:/Users/emmar/Desktop/LAB1_melanoma.xlsx")

c) Generad un resumen (summary) de la variable age de melanoma y guardad la salida que os aparece en un documento .doc

library("MASS")
dataset(Melanoma)
View(Melanoma)
resumen = summary(Melanoma$age)
capture.output(resumen, file="resumen.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.

+## 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:

library("MASS")
data("birthwt")
View(birthwt)
head(birthwt)

a) ¿Cuál es la edad máxima de las madres del conjunto de datos?

max(birthwt$age)

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

min(birthwt$age)

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

rank <- max(birthwt$age)-min(birthwt$age)
rank

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

birthwt$smoke[birthwt$bwt==min(birthwt$bwt)]

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

birthwt$bwt[birthwt$age==max(birthwt$age)]

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]

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.

library(MASS)
data(anorexia)
matr_anorexia<-matrix(c(anorexia$Prewt,anorexia$Postwt),ncol=2)
head(matr_anorexia)

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)

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_Pulmón <- data.frame(Identificador, Edad, Sexo, Peso, Alt, Fuma)

Trat_Pulmón

View(Trat_Pulmón)

a) Seleccionad los registros con edad > 22.

selec1 <- subset(Trat_Pulmón, Edad>22)
selec1

b) Seleccionad el elemento 3 de la columna 4 del conjunto de datos (contando el identificador).

selec2 <- Trat_Pulmón[3,4]
selec2

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.

selec3 <- subset(Trat_Pulmón, Edad < 27, select = -c(Alt))
selec3

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.

library(datasets)
data(ChickWeight)
View(ChickWeight)

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

plot(ChickWeight$weight, main="Gráfico dispersión")

c) Cread un diagrama de caja con la variable Time.

boxplot(ChickWeight$Time, main="Boxplot")

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.

library(MASS)
View(anorexia)
pre_post_v<-(anorexia$Prewt-anorexia$Postwt)
pre_post_v

anorexia_treat_df<-data.frame(anorexia, pre_post_v)
head(anorexia_treat_df)

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.

anorexia_treat_C_df <- subset(anorexia_treat_df,anorexia_treat_df$Treat=="Cont")
head(anorexia_treat_C_df)

Ejercicio 10

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:

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", "I26", "I27", "I28", "I29", "I30")

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,25,28,27,23,21)

Genero <- 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,2, 1,1,2,1)

Tratamiento <- factor(c("B","C","B","A","A","C","A","B","C","A","B","C","A","A","B","C","B","A","A","C","C","B","B","C","A","B","C","A","C","B"))

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,79.5,76.5,77.3,66.2,64.6)

Estatura <- 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,190,173,169,165,180) 


Datos_inventados <- data.frame(Identificador, Edad, Genero, Tratamiento, Peso, Estatura)

Datos_inventados

View(Datos_inventados)

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.

Datos_inventados$IMC <- (Datos_inventados$Peso/Datos_inventados$Estatura)
IMC

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

Identificador <-c("I1","I3","I4","I5","I9","I11","I15","I16","I17","I21","I23","I24", "I27","I28","I30")

Edad <- c(23,21,22,23,21,23,22,21,25,25,26,22,28,27,21)

Genero <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)

Tratamiento <- factor(c("B","B","A","A","C","B","B","C","B","C","B","C","C","A","B")) 

Peso <- c(76.5,79.3,59.5,67.3,97.8,65.4,87.6,93.4,65.4,54.8,65.8,71.7,76.5,77.3,64.6)

Estatura <- c(165,178,165,164,178,158,189,167,182,183,189,166,173,169,180)

Df_Hombres <- data.frame(Identificador, Edad, Genero, Tratamiento, Peso, Estatura)
Identificador <-c("I2", "I6", "I7", "I8", "I10", "I12", "I13", "I14", "I18", "I19", "I20", "I22", "I25", "I26", "I29")


Edad <- c(24,25,26,24,22,25,26,24,26,24,21,27,29,25,23)

Genero <- c(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2)

Tratamiento <- factor(c("C","C","A","B","A","C","A","A","A","A","C","B","A","B","C"))

Peso <- c(81.2,78.6,67.9,100.2,56.4,67.5,87.4,99.7,73.7,85.1,61.2,103.4,85.0,79.5,66.2)

Estatura <- c(154,175,182,165,165,183,184,164,179,165,158,184,175,190,165)

Df_Mujeres <- data.frame(Identificador, Edad, Genero, Tratamiento, Peso, Estatura)

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

Df_ambos = rbind(Df_Hombres, Df_Mujeres)
Df_ambos