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.
# PAra conocer todos los paquetes instalados en RStudio
### sin o uso la función print salta un error
print(library())
# Mostrar la descripción del paquete MASS
print(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.3.3; x86_64-w64-mingw32; 2024-04-26 00:40:28 UTC; windows
## Archs: x64
## RemoteType: standard
## RemotePkgRef: MASS
## RemoteRef: MASS
## RemoteRepos: https://cran.rstudio.com/
## RemotePkgPlatform: x86_64-w64-mingw32
## RemoteSha: 7.3-60.0.1
##
## -- File: C:/Users/Usuario/AppData/Local/R/win-library/4.3/MASS/Meta/package.rds
# Mostrar la descripción del paquete Survival
print(packageDescription("Survival"))
## Title: Survival Analysis
## Priority: recommended
## Package: survival
## Version: 3.7-0
## Date: 2024-06-01
## 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-06-03 15:17:04 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-06-05 16:30:02 UTC
## Built: R 4.3.3; x86_64-w64-mingw32; 2024-07-31 01:07:29 UTC; windows
## Archs: x64
##
## -- File: C:/Users/Usuario/AppData/Local/R/win-library/4.3/Survival/Meta/package.rds
Buscad información sobre el paquete Rcmdr (R Commander) desde la consola.
# PAra conocer todos los paquetes instalados en RStudio
### sin o uso la función print salta un error
##print(??Rcmdr)
# Enlace directo al archivo TXT
url <- "https://drive.google.com/uc?export=download&id=1a2P3YIyr5mDe1mi2UVvRpaH4NDvuTGXe"
# Leer el archivo TXT separado por tabulaciones
mi_data <- read.table(url, sep = "\t", header = TRUE)
# Mostrar los primeros registros del archivo
head(mi_data)
## Tratamiento Biol Fert Tr Ev Rep Obs Altura Diametro NumHojas Clorofila
## 1 Biol CB SF B Ev1 1 1 2.05 2.75 4 26.9
## 2 Biol CB SF B Ev1 1 2 2.13 2.80 4 23.9
## 3 Biol CB SF B Ev1 1 3 2.60 2.60 4 22.9
## 4 Biol CB SF B Ev1 1 4 3.50 2.60 3 39.2
## 5 Biol CB SF B Ev1 1 5 2.60 3.40 3 23.9
## 6 Biol CB SF B Ev1 2 6 3.10 4.70 5 41.0
resumen <- summary(mi_data)
print(resumen)
## Tratamiento Biol Fert Tr
## Length:80 Length:80 Length:80 Length:80
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Ev Rep Obs Altura Diametro
## Length:80 Min. :1.0 Min. : 1.0 Min. :0.500 Min. :2.00
## Class :character 1st Qu.:1.0 1st Qu.: 3.0 1st Qu.:2.000 1st Qu.:2.95
## Mode :character Median :1.5 Median : 5.5 Median :2.400 Median :3.35
## Mean :1.5 Mean : 5.5 Mean :2.335 Mean :3.44
## 3rd Qu.:2.0 3rd Qu.: 8.0 3rd Qu.:2.600 3rd Qu.:3.80
## Max. :2.0 Max. :10.0 Max. :3.500 Max. :5.60
##
## NumHojas Clorofila
## Min. :3.000 Min. : 8.50
## 1st Qu.:4.000 1st Qu.:23.07
## Median :4.200 Median :27.70
## Mean :4.501 Mean :27.83
## 3rd Qu.:5.000 3rd Qu.:32.58
## Max. :7.200 Max. :44.10
## NA's :2
# Improtar el csv
# Enlace directo al archivo CSV en Google Drive
url <- "https://drive.google.com/uc?export=download&id=1_zGW5T_bpIldT4gmuIYI4BHbg1jpnHPZ"
# Leer el archivo CSV desde la URL
mi_data <- read.csv(url, sep = ";")
head(mi_data)
## AREA SEX AGE HEIGHT WEIGHT FVC FEV1 Nivel NumHermanos
## 1 1 1 53 61 161 391 323 AltoL 0
## 2 1 1 40 72 198 441 395 MedioL 3
## 3 1 1 26 69 210 445 347 AltoL 4
## 4 1 1 34 68 187 433 374 AltoL 4
## 5 1 1 46 61 121 354 290 MedioL 4
## 6 1 1 44 72 153 610 491 AltoL 1
print(fivenum(mi_data$HEIGHT))
## [1] 57 64 67 69 76
print(fivenum(mi_data$WEIGHT))
## [1] 90.0 139.5 163.0 188.0 267.0
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")
data(anorexia)
Mostrad los tipos de datos que contiene y comprobad si existen valores NA y NULL
print(table(is.na(anorexia)))
##
## FALSE
## 216
print(table(is.null(anorexia)))
##
## FALSE
## 1
Para la variable Treat, transformad los valores «CBT», «Cont» y FT en «Cogn Beh Tr», «Contr» y «Fam Tr», respectivamente.
library(dplyr)
##
## 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
# Supongamos que tienes un dataframe llamado mi_data y una columna 'Nivel'
anorexia <- anorexia %>%
mutate(Treat = recode(Treat,
"CBT" = "Cogn Beh Tr",
"Cont" = "Contr",
"FT" = "Fam Tr"))
# Mostrar los primeros registros para verificar
head(anorexia)
## Treat Prewt Postwt
## 1 Contr 80.7 80.2
## 2 Contr 89.4 80.1
## 3 Contr 91.8 86.4
## 4 Contr 74.0 86.3
## 5 Contr 78.1 76.1
## 6 Contr 88.3 78.1
wd <- "G:/Mi unidad/maestria uoc/Software para el análisis de datos/R1/LAB1/archivos/creados"
setwd(wd)
data("biopsy")
write.csv(biopsy, file="biopsy.csv")
print("Archivo creado")
## [1] "Archivo creado"
info_archivos <- list.files(wd)
print(info_archivos)
## [1] "biopsy.csv" "desktop.ini"
## [3] "melanoma.csv" "melanoma.txt"
## [5] "melanoma.xlsx" "resumen_melanoma_age.docx"
## [7] "resumen_melanoma_age.txt"
library(xlsx)
library("blapsr")
wd <- "G:/Mi unidad/maestria uoc/Software para el análisis de datos/R1/LAB1/archivos/creados"
setwd(wd)
data("melanoma")
write.csv(melanoma, "melanoma.csv")
write.table(melanoma,"melanoma.txt",sep="")
write.xlsx(melanoma,"melanoma.xlsx")
info_archivos <- list.files(wd)
print(info_archivos)
## [1] "biopsy.csv" "desktop.ini"
## [3] "melanoma.csv" "melanoma.txt"
## [5] "melanoma.xlsx" "resumen_melanoma_age.docx"
## [7] "resumen_melanoma_age.txt"
library("blapsr")
library("officer")
library("dplyr")
wd <- "G:/Mi unidad/maestria uoc/Software para el análisis de datos/R1/LAB1/archivos/creados"
setwd(wd)
data("melanoma")
resumen_age <- summary(melanoma$age)
print(resumen_age)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.00 42.00 54.00 52.46 65.00 95.00
# Guardar el resumen en un archivo de texto plano
write(resumen_age, file = "resumen_melanoma_age.txt")
# Leer el contenido del archivo de texto
texto <- readLines("resumen_melanoma_age.txt")
# Crear un nuevo documento Word
doc <- read_docx()
# Añadir el contenido del archivo de texto al documento Word
doc <- doc %>%
body_add_par(paste(texto, collapse = "\n"), style = "Normal")
# Guardar el documento en formato Word
print(doc, target = "resumen_melanoma_age.docx")
# Definir la URL de descarga directa
url <- "https://drive.google.com/uc?export=download&id=1da0bG60SVNORijBrAy0-yOclJBYXeN_u"
# Leer el archivo CSV desde la URL
parkinson_markers <- read.csv(url, sep = ",", header = TRUE)
print(head(parkinson_markers))
## Age Gender Polyuria Polydipsia sudden.weight.loss weakness Polyphagia
## 1 40 Male No Yes No Yes No
## 2 58 Male No No No Yes No
## 3 41 Male Yes No No Yes Yes
## 4 45 Male No No Yes Yes Yes
## 5 60 Male Yes Yes Yes Yes Yes
## 6 55 Male Yes Yes No Yes Yes
## Genital.thrush visual.blurring Itching Irritability delayed.healing
## 1 No No Yes No Yes
## 2 No Yes No No No
## 3 No No Yes No Yes
## 4 Yes No Yes No Yes
## 5 No Yes Yes Yes Yes
## 6 No Yes Yes No Yes
## partial.paresis muscle.stiffness Alopecia Obesity class
## 1 No Yes Yes Yes Positive
## 2 Yes No Yes No Positive
## 3 No Yes Yes No Positive
## 4 No No No No Positive
## 5 Yes Yes Yes Yes Positive
## 6 No Yes Yes Yes Positive
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:
#cargar base de datos
data(birthwt)
print(max(birthwt$age))
## [1] 45
print(min(birthwt$age))
## [1] 14
print(range(birthwt$age))
## [1] 14 45
fuma = ifelse(birthwt$smoke[birthwt$bwt == min(birthwt$bwt)] == 0, "Sí", "No")
print(fuma)
## [1] "No"
print(birthwt$bwt[birthwt$age == max(birthwt$age)])
## [1] 4990
print(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
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.
#cargar base de datos
data(anorexia)
#crear matriz
mat <- matrix(c(anorexia$Prewt, anorexia$Postwt), ncol = 2)
print(head(mat))
## [,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
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)
print(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
edad_mas_22 <- subset(Trat_Pulmon, Edad > 22)
print(edad_mas_22)
## 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Í
# Seleccionar un elemento en la fila i y columna j. Siemrpe es en ese orden
print(Trat_Pulmon[3, 4])
## [1] 79.3
edad_mas_27 <- subset(Trat_Pulmon, Edad > 27, select = -Alt)
print(edad_mas_27)
## Identificador Edad Sexo Peso Fuma
## 25 I25 29 2 85 SÍ
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).
#cargar base de datos
data(ChickWeight)
#crear matriz
print(head(ChickWeight))
## weight Time Chick Diet
## 1 42 0 1 1
## 2 51 2 1 1
## 3 59 4 1 1
## 4 64 6 1 1
## 5 76 8 1 1
## 6 93 10 1 1
plot(ChickWeight$weight, main = "Gráfico de disperción")
boxplot(ChickWeight$weight, main = "Gráfico de cajas")
boxplot(ChickWeight$Time, main ="Gráfico de cajas")
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.
#cargar base de datos
data(anorexia)
anorexia_treat_df <- data.frame(Treat = anorexia$Treat, Treat_dif = anorexia$Prewt-anorexia$Postwt)
print(head(anorexia_treat_df))
## Treat Treat_dif
## 1 Cont 0.5
## 2 Cont 9.3
## 3 Cont 5.4
## 4 Cont -12.3
## 5 Cont 2.0
## 6 Cont 10.2
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.
#cargar base de datos
anorexia_treat_C_df <- subset(anorexia_treat_df, Treat == "Cont" & Treat_dif > 0)
print(head(anorexia_treat_C_df))
## Treat Treat_dif
## 1 Cont 0.5
## 2 Cont 9.3
## 3 Cont 5.4
## 5 Cont 2.0
## 6 Cont 10.2
## 7 Cont 12.2