Exercici 1:

Utilitzant les funcions citades en aquest Laboratori, comproveu quins paquets teniu instal·lats a la vostra versió d’RStudio i instal·leu el paquet MASS i el paquet Survival i comproveu la informació que contenen. Busqueu informació sobre el paquet Rcmdr (R Commander) des de la consola.

library() # Informa dels paquets instal·lats en RStudio i de la ruta d'ubicació.

Exercici 2:

  1. Importeu un arxiu de text i busqueu un summary() de tres variables que trieu.
  2. Importeu un arxiu «.csv» i busqueu un fivenum() de dues variables que us semblin rellevants per a l’estudi.
bir <- read.table("C:\\Users\\marte\\code\\R\\PAD_R\\LAB 1\\birthwt_text.txt")
View(bir)
summary(bir$age)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   14.00   19.00   23.00   23.24   26.00   45.00
summary(bir$lwt)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    80.0   110.0   121.0   129.8   140.0   250.0
summary(bir$bwt)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     709    2414    2977    2945    3487    4990
library(readr)
bir_csv <- read.csv("C:\\Users\\marte\\code\\R\\PAD_R\\LAB 1\\birthwt.csv")
View(bir_csv)
fivenum(bir_csv$age)
## [1] 14 19 23 26 45
fivenum(bir_csv$lwt)
## [1]  80 110 121 140 250

Exercici 3:

A partir del conjunt de dades anorexia del paquet MASS, que corresponen a les dades de canvi de pes de pacients joves amb anorèxia, mostreu els tipus de dades que conté i comproveu si hi ha valors NA i NULL. Per a la variable Treat, transformeu els valors «CBT», «Cont» i FT en «Cogn Beh Tr», «Contr» i «Fam Tr», respectivament.

library("MASS")
data("anorexia")
head(anorexia) # Mostra les 5 primeres files del data frame.
##   Treat Prewt Postwt
## 1  Cont  80.7   80.2
## 2  Cont  89.4   80.1
## 3  Cont  91.8   86.4
## 4  Cont  74.0   86.3
## 5  Cont  78.1   76.1
## 6  Cont  88.3   78.1
typeof(anorexia$Treat) # typeof() per mostrar el tipus de variables de cada fila.
## [1] "integer"
typeof(anorexia$Prewt)
## [1] "double"
typeof(anorexia$Postwt)
## [1] "double"
table(is.na(anorexia)) # Per saber quants valors NA hi ha.
## 
## FALSE 
##   216
table(is.null(anorexia)) # Per saber quants valors NULL hi ha.
## 
## FALSE 
##     1
anorexia_F <- factor(anorexia$Treat, levels=c("Cont", "CBT", "FT"), labels=c("Contr", "Cogn Beh Tr", "Fam Tr"))
print(anorexia_F)
##  [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: Contr Cogn Beh Tr Fam Tr

Exercici 4:

  1. Exporteu les dades biopsy del paquet MASS a un arxiu «.csv.»
  2. Exporteu les dades melanoma del paquet MASS a arxius de tres diferents formats i comproveu que s’han creat els diferents arxius en els formats i les rutes especificats. Podeu generar una captura de pantalla de la seva ubicació a la carpeta.
  3. Genereu un resum (summary) de la variable age de melanoma i deseu la sortida que us apareix en un document .doc
  4. Busqueu un data frame en algun repositori de dades de Biomedicina, descarregueu un conjunt de dades en «.csv» i importeu aquest fitxer a un document R Markdown usant el codi o el menú d’importació d’RStudio.
# apartat a)
library(MASS)
data(biopsy)
write.csv(biopsy, file="biopsy.csv")
Arxiu csv de biopsy
Arxiu csv de biopsy
# apartat b)
library(openxlsx)
write.csv(Melanoma, file="Melanoma_csv.csv")
write.table(Melanoma, file="Melanoma_text.txt")
write.xlsx(Melanoma, "Melanoma_xlsx.xlsx")
Arxiu csv
Arxiu csv
Arxiu txt
Arxiu txt
Arxiu xlsx
Arxiu xlsx
# apartat c
sum_age <- summary(Melanoma$age)
sum_age
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    4.00   42.00   54.00   52.46   65.00   95.00
capture.output(sum_age, file="sum_age.doc")
Arxiu doc de “sum_age”
Arxiu doc de “sum_age”
# apartat d
library(readr)
healthcare_dataset_csv <- read_csv("C:/Users/marte/code/R/PAD_R/LAB 1/healthcare_dataset.csv.zip")
## Rows: 10000 Columns: 15
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (10): Name, Gender, Blood Type, Medical Condition, Doctor, Hospital, In...
## dbl   (3): Age, Billing Amount, Room Number
## date  (2): Date of Admission, Discharge Date
## 
## ℹ 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.
View(healthcare_dataset_csv)

Exercici 5:

A l’exemple següent veurem com utilitzar diferents operadors sobre el conjunt de dades birthwt, així com també algunes funcions que ens permeten obtenir més informació de les variables:

  1. Quina és l’edat màxima de les mares del conjunt de dades?
data(birthwt)
edat_max <- max(birthwt$age)
edat_max
## [1] 45
  1. Quina és l’edat mínima de les mares del conjunt de dades?
edat_min <- min(birthwt$age)
edat_min
## [1] 14
  1. Quin és el rang d’edat de les mares?
rang_edat <- edat_max - edat_min
rang_edat 
## [1] 31
  1. Fumava la mare que el seu nounat era el de menys pes?
fumadora <- birthwt$smoke[birthwt$bwt==min(birthwt$bwt)]
fumadora 
## [1] 1
if (fumadora == 0) {
  print("No, la mare del nounat amb menys pes no fumava!!")
  } else {
  print("Sí, era fumadora!!")
  } 
## [1] "Sí, era fumadora!!"
  1. Quant va pesar el nounat la mare del qual tenia l’edat màxima?
pes_bwt <- birthwt$bwt[birthwt$age==max(birthwt$age)]
pes_bwt
## [1] 4990
  1. Feu una llista els pesos dels nounats, les mares dels quals visitaran menys de dues vegades el metge durant el primer trimestre.
llista <- birthwt$bwt[birthwt$ftv<=2]
llista
##   [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

Exercici 6:

A partir del conjunt de dades anorexia treballat en apartats anteriors, creeu una matriu que tingui com a columnes els valors de Prewt i Postwt, i cada fila siguin els valors corresponents per a cada posició.

View(anorexia)
matriu_axia <- matrix(c(anorexia$Prewt, anorexia$Postwt), ncol=2)
head(matriu_axia)
##      [,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

Exercici 7:

Copia el codi següent a la teva consola per generar un data frame amb 25 registres i sis variables, i respon als apartats següents:

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")
Edat <-
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)
Sexe <- 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 per a dones i 2 per a homes
Pes <- 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Í")

Tract_Pulmo <- data.frame(Identificador,Edat,Sexe,Pes,Alt,Fuma)
Tract_Pulmo
##    Identificador Edat Sexe   Pes 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Í
  1. Seleccioneu els registres amb edat > 22.

    edat_22 <- subset(Tract_Pulmo, Edat > 22)
    edat_22
    ##    Identificador Edat Sexe   Pes 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Í
  2. Seleccioneu l’element 3 de la columna 4 del conjunt de dades (comptant l’identificador).

    element_3_4 <- Tract_Pulmo[3, 4]
    element_3_4
    ## [1] 79.3
  3. Useu l’ordre subset() per seleccionar totes les files que tenen una edat més petita que 27 anys i sense incloure la columna Alt.

menor27_menysAlt <- subset(Tract_Pulmo, Edat < 27, select = -c(Alt))
menor27_menysAlt
##    Identificador Edat Sexe   Pes Fuma
## 1             I1   23    1  76.5   SÍ
## 2             I2   24    2  81.2   NO
## 3             I3   21    1  79.3   SÍ
## 4             I4   22    1  59.5   SÍ
## 5             I5   23    1  67.3   NO
## 6             I6   25    2  78.6   NO
## 7             I7   26    2  67.9   NO
## 8             I8   24    2 100.2   SÍ
## 9             I9   21    1  97.8   SÍ
## 10           I10   22    2  56.4   SÍ
## 11           I11   23    1  65.4   NO
## 12           I12   25    2  67.5   NO
## 13           I13   26    2  87.4   SÍ
## 14           I14   24    2  99.7   SÍ
## 15           I15   22    1  87.6   SÍ
## 16           I16   21    1  93.4   SÍ
## 17           I17   25    1  65.4   NO
## 18           I18   26    2  73.7   NO
## 19           I19   24    2  85.1   SÍ
## 20           I20   21    2  61.2   SÍ
## 21           I21   25    1  54.8   SÍ
## 23           I23   26    1  65.8   SÍ
## 24           I24   22    1  71.7   NO

Exercici 8:

Incorporeu el dataset ChickWeight que conté informació sobre el pes de 578 pollets en grams (weight), el temps des del mesurament en néixer (Time), una variable identificadora de cada pollet (Chick) a partir del rang de pes i una variable factor amb el tipus de dieta experimental que cada pollet va rebre (Diet).

  1. Incorporeu el conjunt de dades ChickWeight del paquet datasets al vostre entorn de treball.
data("ChickWeight")
  1. Genereu un gràfic de dispersió de la variable weight.
plot(ChickWeight$weight, col="purple3", main="Weight")

  1. Creeu un diagrama de caixa amb la variable Time.
boxplot(ChickWeight$Time, col="green3", main="Time")

Exercici 9:

A partir del conjunt de dades anorexia del paquet MASS, creeu un altre data frame que s’anomeni anorexia_treat_df format per Treat i per un vector nou calculat a partir de la diferència Prewt-Postwt. D’aquesta manera, ens quedarà un data frame que contingui el tipus de tractament i el valor del pes guanyat o perdut després d’haver fet el tractament.

Seleccioneu aquells individus que han guanyat pes després del tractament i creeu un nou conjunt anomenat anorexia_treat_C_df que contingui només les dades d’aquells que han seguit el tractament «Cont» i que han guanyat pes després del tractament.

diffwt <- anorexia$Prewt - anorexia$Postwt # si la resta és del pes inicial menys el pes final, la diferència dels que han guanyat de pes serà negativa "x < 0".
Treat <- anorexia$Treat
anorexia_treat_df <- data.frame(Treat, diffwt)
anorexia_treat_df
##    Treat diffwt
## 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
anorexia_treat_C_df <- subset(anorexia_treat_df, Treat == "Cont" & diffwt < 0)
anorexia_treat_C_df
##    Treat diffwt
## 4   Cont  -12.3
## 8   Cont  -11.6
## 10  Cont   -6.2
## 13  Cont   -8.3
## 14  Cont   -3.3
## 15  Cont  -11.3
## 21  Cont   -2.8
## 22  Cont   -0.3
## 23  Cont   -1.8
## 24  Cont   -3.7
## 25  Cont  -15.9

Exercici 10:

Entreu a RPubs i registreu-vos. Creeu-vos un perfil i pugeu un document R Markdown. Els prerequisits són tenir instal·lat R i RStudio (v0.96.230 o més), i el paquet knitr (v0.5 o més). Passos que heu de seguir per publicar el vostre document:

  1. En RStudio, creeu un document R Markdown.

  2. Genereu el document amb Knit.

  3. A la finestra de previsualització, cliqueu el botó de publicar. Com a solució del vostre exercici, copieu l’enllaç de la vostra pàgina de prova d’RPubs.