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.
# Primero, se comprueban los packages que están instalados
library()
# Las librerías MASS y Survival ya están instaladas.
# A continuación se muestra la información que ambas contienen.
packageDescription("MASS")
## Package: MASS
## Priority: recommended
## Version: 7.3-60.0.1
## Date: 2024-01-12
## Revision: $Rev: 3621 $
## Depends: R (>= 4.0), grDevices, graphics, stats, utils
## Imports: methods
## Suggests: lattice, nlme, nnet, survival
## Authors@R: c(person("Brian", "Ripley", role = c("aut", "cre", "cph"),
## email = "ripley@stats.ox.ac.uk"), person("Bill", "Venables",
## role = "ctb"), person(c("Douglas", "M."), "Bates", role =
## "ctb"), person("Kurt", "Hornik", role = "trl", comment =
## "partial port ca 1998"), person("Albrecht", "Gebhardt", role =
## "trl", comment = "partial port ca 1998"), person("David",
## "Firth", role = "ctb"))
## Description: Functions and datasets to support Venables and Ripley,
## "Modern Applied Statistics with S" (4th edition, 2002).
## Title: Support Functions and Datasets for Venables and Ripley's MASS
## LazyData: yes
## ByteCompile: yes
## License: GPL-2 | GPL-3
## URL: http://www.stats.ox.ac.uk/pub/MASS4/
## Contact: <MASS@stats.ox.ac.uk>
## NeedsCompilation: yes
## Packaged: 2024-01-13 12:39:26 UTC; ripley
## Author: Brian Ripley [aut, cre, cph], Bill Venables [ctb], Douglas M.
## Bates [ctb], Kurt Hornik [trl] (partial port ca 1998), Albrecht
## Gebhardt [trl] (partial port ca 1998), David Firth [ctb]
## Maintainer: Brian Ripley <ripley@stats.ox.ac.uk>
## Repository: CRAN
## Date/Publication: 2024-01-13 13:36:16 UTC
## Built: R 4.2.3; x86_64-apple-darwin17.0; 2024-03-04 11:10:07 UTC; unix
##
## -- File: /Library/Frameworks/R.framework/Versions/4.2/Resources/library/MASS/Meta/package.rds
packageDescription("Survival")
## Title: Survival Analysis
## Priority: recommended
## Package: survival
## Version: 3.5-8
## Date: 2024-02-13
## Depends: R (>= 3.5.0)
## Imports: graphics, Matrix, methods, splines, stats, utils
## LazyData: Yes
## LazyDataCompression: xz
## ByteCompile: Yes
## Authors@R: c(person(c("Terry", "M"), "Therneau",
## email="therneau.terry@mayo.edu", role=c("aut", "cre")),
## person("Thomas", "Lumley", role=c("ctb", "trl"),
## comment="original S->R port and R maintainer until 2009"),
## person("Atkinson", "Elizabeth", role="ctb"), person("Crowson",
## "Cynthia", role="ctb"))
## Description: Contains the core survival analysis routines, including
## definition of Surv objects, Kaplan-Meier and Aalen-Johansen
## (multi-state) curves, Cox models, and parametric accelerated
## failure time models.
## License: LGPL (>= 2)
## URL: https://github.com/therneau/survival
## NeedsCompilation: yes
## Packaged: 2024-02-13 23:24:58 UTC; therneau
## Author: Terry M Therneau [aut, cre], Thomas Lumley [ctb, trl] (original
## S->R port and R maintainer until 2009), Atkinson Elizabeth
## [ctb], Crowson Cynthia [ctb]
## Maintainer: Terry M Therneau <therneau.terry@mayo.edu>
## Repository: CRAN
## Date/Publication: 2024-02-14 10:20:23 UTC
## Built: R 4.2.3; x86_64-apple-darwin17.0; 2024-03-04 11:02:30 UTC; unix
##
## -- File: /Library/Frameworks/R.framework/Versions/4.2/Resources/library/Survival/Meta/package.rds
# La información sobre el paquete Rcmdr se obtiene del siguiente modo:
??Rcmdr
# a) Se importa el archivo .txt y se asigna a la variable cancer.
cancer <- read.csv("/Users/arnaumirhurtado/Desktop/breast-cancer-wisconsin.data.txt")
head(cancer)
#Resumen estadístico tres variables:
summary(cancer$unif_cell_size)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.000 1.000 3.134 5.000 10.000
summary(cancer$single_epith_cell_size)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 2.000 2.000 3.216 4.000 10.000
summary(cancer$norm_nucleoli)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.000 1.000 2.867 4.000 10.000
# Se importa el archivo csv y se asigna a la variable cars_data.
cars_data <- read.csv("/Users/arnaumirhurtado/Desktop/data.csv")
head(cars_data)
# fivenum() de dos variables:
fivenum(cars_data$price_usd)
## [1] 1.000 2141.945 4800.000 8950.000 50000.000
fivenum(cars_data$odometer_value)
## [1] 0 158131 250000 325000 1000000
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.
library(MASS)
# A partir de la librería MASS, se importan los datos de "anorexia"
data("anorexia")
# Primeros registros de anorexia:
head(anorexia)
# Comprobar si hay valores perdidos:
table(is.na(anorexia))
##
## FALSE
## 216
# Comprobar si hay valores nulos:
table(is.null(anorexia))
##
## FALSE
## 1
#Transformación de las variables:
anorexia_F = factor(anorexia$Treat, levels = c("CBT", "Cont", "FT"),
labels = c("Cogn Beh Tr", "Contr", "Fam Tr"))
head(anorexia_F)
## [1] Contr Contr Contr Contr Contr Contr
## Levels: Cogn Beh Tr Contr Fam Tr
# a) exportación biopsy
library("MASS")
write.csv(biopsy, file= "/Users/arnaumirhurtado/biopsy.csv")
# b) exportar el conjunto de datos a tres formatos distintos
data("Melanoma")
write.csv(Melanoma, file= "/Users/arnaumirhurtado/melanoma.csv")
write.table(Melanoma,"/Users/arnaumirhurtado/melanoma.txt")
write.csv2(Melanoma, file= "/Users/arnaumirhurtado/melanoma.csv2")
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:
# Activación de la librería MASS (donde están los datos de interés)
library(MASS)
#definición de la estructura de los datos
data("birthwt")
# mostrar los primeros datos del conjunto.
head(birthwt)
# a) edad máxima madres
max(birthwt$age)
## [1] 45
# b) edad mínima madres
min(birthwt$age)
## [1] 14
# c) rango de edad de las madres
range_age = max(birthwt$age) - min(birthwt$age)
range_age
## [1] 31
# d) ¿Fumaba la madre cuyo recién nacido era el de menor peso?
birthwt$smoke[birthwt$bwt==min(birthwt$bwt)]
## [1] 1
# e) peso del recién nacido cuya madre tenía la edad máxima
birthwt$bwt[birthwt$age==max(birthwt$age)]
## [1] 4990
# f) pesos de los recién nacidos cuyas madres visitaran menos de dos veces al medico
# durante el primer trimestre
birthwt$bwt[birthwt$ftv<= 2]
## [1] 2523 2557 2594 2600 2622 2637 2637 2663 2665 2722 2733 2751 2750 2769 2769
## [16] 2778 2807 2821 2835 2836 2863 2877 2877 2906 2920 2920 2920 2920 2948 2948
## [31] 2977 2977 2977 2977 2922 3005 3033 3042 3062 3062 3062 3062 3062 3090 3090
## [46] 3090 3100 3104 3132 3147 3175 3175 3203 3203 3203 3225 3225 3232 3232 3234
## [61] 3260 3274 3274 3317 3317 3317 3321 3331 3374 3374 3402 3416 3444 3459 3460
## [76] 3473 3544 3487 3544 3572 3572 3586 3600 3614 3614 3629 3629 3637 3643 3651
## [91] 3651 3651 3651 3699 3728 3756 3770 3770 3770 3790 3799 3827 3856 3860 3884
## [106] 3884 3912 3940 3941 3941 3969 3983 3997 3997 4054 4054 4111 4153 4167 4174
## [121] 4238 4593 4990 709 1021 1135 1330 1474 1588 1588 1701 1729 1790 1818 1885
## [136] 1893 1899 1928 1928 1928 1936 1970 2055 2055 2082 2084 2084 2100 2125 2187
## [151] 2187 2211 2225 2240 2240 2282 2296 2296 2325 2353 2353 2367 2381 2381 2381
## [166] 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.
library("MASS")
data("anorexia")
# Crear matriz con columnes con los valores de prewr y postwt.
# Las filas son los valores para cada posición.
matr_anorexia = matrix(c(anorexia$Prewt, anorexia$Postwt), ncol = 2)
head(matr_anorexia)
## [,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
colnames(matr_anorexia)= c("Prewt", "Postwt")
head(matr_anorexia)
## Prewt Postwt
## [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
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
# seleccionar registros con edad mayor de 22
bigger22 <- subset(Trat_Pulmon, Edad >22)
bigger22
# seleccionar elemento 3 de la columan 4
seleccion <- Trat_Pulmon[3,4]
seleccion
## [1] 79.3
# edad menor 27 sin incluir alt
subset2 <- subset(Trat_Pulmon, Edad<27, select = -c(Alt))
subset2
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.
# a) Incorporación del conjunto al entorno de trabajo.
library(datasets)
data.frame(ChickWeight)
head(ChickWeight)
#b) gráfico de dispersión de la variable
plot(ChickWeight$weight, col= blues9, main= "Gráfico 1")
#c) boxplot
boxplot(ChickWeight$Time, col="yellow", main= "Gráfico 2")
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.
library("MASS")
data("anorexia")
#creamos un nuevo vector en el que se calcule la diferencia de peso después del tratamiento
after_treatment <- c(anorexia$Postwt-anorexia$Prewt)
after_treatment
## [1] -0.5 -9.3 -5.4 12.3 -2.0 -10.2 -12.2 11.6 -7.1 6.2 -0.2 -9.2
## [13] 8.3 3.3 11.3 0.0 -1.0 -10.6 -4.6 -6.7 2.8 0.3 1.8 3.7
## [25] 15.9 -10.2 1.7 0.7 -0.1 -0.7 -3.5 14.9 3.5 17.1 -7.6 1.6
## [37] 11.7 6.1 1.1 -4.0 20.9 -9.1 2.1 -1.4 1.4 -0.3 -3.7 -0.8
## [49] 2.4 12.6 1.9 3.9 0.1 15.4 -0.7 11.4 11.0 5.5 9.4 13.6
## [61] -2.9 -0.1 7.4 21.5 -5.3 -3.8 13.4 13.1 9.0 3.9 5.7 10.7
#creación de la data frame
anorexia_treat_df<-data.frame(anorexia, after_treatment)
head(anorexia_treat_df)
#Seleccionad aquellos individuos que han ganado peso después del tratamiento
anorexia_treat_C_df <- subset(anorexia_treat_df, anorexia_treat_df$after_treatment>0 &
anorexia_treat_df$Treat =="Cont")
head(anorexia_treat_C_df)