Ejercicio 1

# Comprobamos los paquetes instalados.
library()
# Instalamos los paquetes requeridos.
options(repos = c(CRAN = "https://cloud.r-project.org"))
install.packages("MASS")
## Installing package into 'C:/Users/jorge/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'MASS' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'MASS'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\jorge\AppData\Local\R\win-library\4.5\00LOCK\MASS\libs\x64\MASS.dll a
## C:\Users\jorge\AppData\Local\R\win-library\4.5\MASS\libs\x64\MASS.dll:
## Permission denied
## Warning: restored 'MASS'
## 
## The downloaded binary packages are in
##  C:\Users\jorge\AppData\Local\Temp\RtmpqmYj5y\downloaded_packages
install.packages("survival")
## Installing package into 'C:/Users/jorge/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'survival' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\jorge\AppData\Local\Temp\RtmpqmYj5y\downloaded_packages
# Accedemos a la información de los paquetes.
packageDescription("MASS")
## Package: MASS
## Priority: recommended
## Version: 7.3-65
## Date: 2025-02-19
## Revision: $Rev: 3681 $
## Depends: R (>= 4.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 = "Brian.Ripley@R-project.org"), person("Bill",
##         "Venables", role = c("aut", "cph")), 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", comment = "support
##         functions for polr"))
## 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: 2025-02-19 08:49:43 UTC; ripley
## Author: Brian Ripley [aut, cre, cph], Bill Venables [aut, cph], Douglas
##         M. Bates [ctb], Kurt Hornik [trl] (partial port ca 1998),
##         Albrecht Gebhardt [trl] (partial port ca 1998), David Firth
##         [ctb] (support functions for polr)
## Maintainer: Brian Ripley <Brian.Ripley@R-project.org>
## Repository: CRAN
## Date/Publication: 2025-02-28 17:44:52 UTC
## Built: R 4.5.1; x86_64-w64-mingw32; 2025-10-06 00:50:00 UTC; windows
## Archs: x64
## 
## -- File: C:/Users/jorge/AppData/Local/R/win-library/4.5/MASS/Meta/package.rds
packageDescription("survival")
## Title: Survival Analysis
## Priority: recommended
## Package: survival
## Version: 3.8-3
## Date: 2024-12-17
## 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-12-17 16:37:18 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-12-17 20:20:02 UTC
## Built: R 4.5.1; x86_64-w64-mingw32; 2025-10-06 01:53:08 UTC; windows
## Archs: x64
## 
## -- File: C:/Users/jorge/AppData/Local/R/win-library/4.5/survival/Meta/package.rds
# Buscamos información sobre el paquete Rcmdr
??Rcmdr
## starting httpd help server ...
##  done

Ejercicio 2

# Analizamos el archivo
library(readr)
txt <- read.csv("C:/Users/jorge/OneDrive/Universidad/anorexia.csv")
summary(txt)
##     Treat               Prewt           Postwt      
##  Length:72          Min.   :70.00   Min.   : 71.30  
##  Class :character   1st Qu.:79.60   1st Qu.: 79.33  
##  Mode  :character   Median :82.30   Median : 84.05  
##                     Mean   :82.41   Mean   : 85.17  
##                     3rd Qu.:86.00   3rd Qu.: 91.55  
##                     Max.   :94.90   Max.   :103.60
# Importamos el archivo .csv y se analiza
csv <- read.csv("C:/Users/jorge/OneDrive/Universidad/anorexia.csv")
fivenum(csv$Prewt)
## [1] 70.0 79.6 82.3 86.0 94.9
fivenum(csv$Postwt)
## [1]  71.30  79.15  84.05  91.60 103.60

Ejercicio 3

# Consultamos los tipos de datos que contiene el set de datos.
library(MASS)
data(anorexia)
dim(anorexia)
## [1] 72  3
# Buscamos si hay valores NULL y NA
table(is.null(anorexia))
## 
## FALSE 
##     1
table(is.na(anorexia))
## 
## FALSE 
##   216
# Definimos las etiquetas que queremos modificar y cuál es el cambio que queremos hacer. Para ello se utiliza factor, levels y labels.
anorexia_2 = factor(anorexia$Treat, levels = c("CBT", "Cont", "FT"), labels = c("Cogn Beh Tr", "Contr", "Fam Tr"))
anorexia_2
##  [1] Contr       Contr       Contr       Contr       Contr       Contr      
##  [7] Contr       Contr       Contr       Contr       Contr       Contr      
## [13] Contr       Contr       Contr       Contr       Contr       Contr      
## [19] Contr       Contr       Contr       Contr       Contr       Contr      
## [25] Contr       Contr       Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr
## [31] Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr
## [37] Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr
## [43] Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr
## [49] Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr Cogn Beh Tr
## [55] Cogn Beh Tr Fam Tr      Fam Tr      Fam Tr      Fam Tr      Fam Tr     
## [61] Fam Tr      Fam Tr      Fam Tr      Fam Tr      Fam Tr      Fam Tr     
## [67] Fam Tr      Fam Tr      Fam Tr      Fam Tr      Fam Tr      Fam Tr     
## Levels: Cogn Beh Tr Contr Fam Tr

Ejercicio 4

# a) Exporto los datos al csv "biopsy.csv"
library(MASS)
data("biopsy")
write.csv(biopsy, file = "C:/Users/jorge/OneDrive/Universidad/Máster/Bioinfo/1er cuatri/Software para análisis datos/Reto 1/Actividades/biopsy.csv")

# b) Creo 1 archivo txt, otro csv y otro SPSS
data("Melanoma")
write.table(Melanoma, "Archivos crear/melanoma.txt")
write.csv(Melanoma, file = "Archivos crear/melanoma.csv")
library(foreign)
write.foreign(Melanoma, "Archivos crear/melanoma.spss", codefile = "Archivos crear/melanoma.sps", package = "SPSS")

# c) 
resumen_age = summary(Melanoma$age)
capture.output(resumen_age, file = "Archivos crear/resumen_age.doc")

# d)
refseq <- read.csv("Archivos crear/refseq-genbank.csv")

Ejercicio 5

data("birthwt")
?birthwt
# a)
max(birthwt$age)
## [1] 45
# b)
min(birthwt$age)
## [1] 14
# c)
range(birthwt$age)
## [1] 14 45
# d) Si se obtiene 1 significa que la madre fumaba, y un 0 significa que no
birthwt$smoke[birthwt$bwt==min(birthwt$bwt)]
## [1] 1
# e)
birthwt$bwt[birthwt$age==max(birthwt$age)]
## [1] 4990
# f) 
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

data("anorexia")
prewt <- anorexia$Prewt
postwt <- anorexia$Postwt
matriz <- matrix(prewt, postwt, ncol = 2)
## Warning in matrix(prewt, postwt, ncol = 2): data length [72] is not a
## sub-multiple or multiple of the number of rows [80]
head(matriz)
##      [,1] [,2]
## [1,] 80.7 80.6
## [2,] 89.4 78.4
## [3,] 91.8 77.6
## [4,] 74.0 88.7
## [5,] 78.1 81.3
## [6,] 88.3 78.1

Ejercicio 7

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
##    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
## 7             I7   26    2  67.9 182   NO
## 8             I8   24    2 100.2 165   SÍ
## 9             I9   21    1  97.8 178   SÍ
## 10           I10   22    2  56.4 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Í
## 15           I15   22    1  87.6 189   SÍ
## 16           I16   21    1  93.4 167   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Í
## 20           I20   21    2  61.2 158   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Í
## 24           I24   22    1  71.7 166   NO
## 25           I25   29    2  85.0 175   SÍ
# a)
edad_22 <- subset(Trat_Pulmon, Edad>22)
# b)
Trat_Pulmon[3,4]
## [1] 79.3
# c)
menor_27 <- subset(Trat_Pulmon, Edad < 27, select = -c(Alt))

Ejercicio 8

# a)
data("ChickWeight")
# b) Usamos plot y modificamos el gráfico 
plot(ChickWeight$weight, main = "Peso vs Tiempo", ylab = "Peso", xlab = "Tiempo")

# c) En este caso se utiliza boxplot
boxplot(ChickWeight$Time, ylab = "Tiempo" )

Ejercicio 9

library(MASS)
data("anorexia")
# Creamos los 2 vectores que formaran parte del nuevo data frame
vect <- (anorexia$Prewt - anorexia$Postwt)
treat <- subset(anorexia, select = c(Treat))
# Creamos el nuevo data frame
anorexia_treat_df <- data.frame (treat, vect)
anorexia_treat_df
##    Treat  vect
## 1   Cont   0.5
## 2   Cont   9.3
## 3   Cont   5.4
## 4   Cont -12.3
## 5   Cont   2.0
## 6   Cont  10.2
## 7   Cont  12.2
## 8   Cont -11.6
## 9   Cont   7.1
## 10  Cont  -6.2
## 11  Cont   0.2
## 12  Cont   9.2
## 13  Cont  -8.3
## 14  Cont  -3.3
## 15  Cont -11.3
## 16  Cont   0.0
## 17  Cont   1.0
## 18  Cont  10.6
## 19  Cont   4.6
## 20  Cont   6.7
## 21  Cont  -2.8
## 22  Cont  -0.3
## 23  Cont  -1.8
## 24  Cont  -3.7
## 25  Cont -15.9
## 26  Cont  10.2
## 27   CBT  -1.7
## 28   CBT  -0.7
## 29   CBT   0.1
## 30   CBT   0.7
## 31   CBT   3.5
## 32   CBT -14.9
## 33   CBT  -3.5
## 34   CBT -17.1
## 35   CBT   7.6
## 36   CBT  -1.6
## 37   CBT -11.7
## 38   CBT  -6.1
## 39   CBT  -1.1
## 40   CBT   4.0
## 41   CBT -20.9
## 42   CBT   9.1
## 43   CBT  -2.1
## 44   CBT   1.4
## 45   CBT  -1.4
## 46   CBT   0.3
## 47   CBT   3.7
## 48   CBT   0.8
## 49   CBT  -2.4
## 50   CBT -12.6
## 51   CBT  -1.9
## 52   CBT  -3.9
## 53   CBT  -0.1
## 54   CBT -15.4
## 55   CBT   0.7
## 56    FT -11.4
## 57    FT -11.0
## 58    FT  -5.5
## 59    FT  -9.4
## 60    FT -13.6
## 61    FT   2.9
## 62    FT   0.1
## 63    FT  -7.4
## 64    FT -21.5
## 65    FT   5.3
## 66    FT   3.8
## 67    FT -13.4
## 68    FT -13.1
## 69    FT  -9.0
## 70    FT  -3.9
## 71    FT  -5.7
## 72    FT -10.7
# Creamos el data frame con las condiciones dadas: que haya aumentado peso y que han seguido el tratamiento "Cont"
anorexia_treat_C_df <- subset(anorexia_treat_df, anorexia_treat_df$Treat == "Cont" & anorexia_treat_df$vect > 0)
anorexia_treat_C_df
##    Treat vect
## 1   Cont  0.5
## 2   Cont  9.3
## 3   Cont  5.4
## 5   Cont  2.0
## 6   Cont 10.2
## 7   Cont 12.2
## 9   Cont  7.1
## 11  Cont  0.2
## 12  Cont  9.2
## 17  Cont  1.0
## 18  Cont 10.6
## 19  Cont  4.6
## 20  Cont  6.7
## 26  Cont 10.2

Ejercicio 10

Enlace a RPubs: