setwd () per indicar el directori o CTRL + shift + H.
?print per veure informació sobre la funció
| Títol 1 | Títol 2 | Títol 3 | Títol 4 |
|---|---|---|---|
| 1 | 2 | 3 | 11 |
| 4 | 5 | 6 | 21 |
| 6 | 55 | 56 | 23 |
Generem enllaços així: Enllaç UOC
Important recordar utilitzar / enlloc de \ en els, sinó no funcionarà. Els espais els canvia R auromàticament a %20.
Podem escriure amb cursiva, negreta o
tatxat. Podem
intentar
combinar-ho.
#Chunks: incorporar codi d'R als documents
#eval = TRUE #avalua el fragment de codi per a la seva execució
#error = TRUE #es mostren els missatges d'error
#echo = TRUE #es veurà el codi al document, en cas contrari, només el resultat
#include = FALSE #evitarem que el codi i els resultats apareguin a l'arxiu acabat. R Markdown encara executa el codi en el fragment i els resultats poden ser utilitzats per altres fragments
#message = FALSE #evita que els missatges generats pel codi apareguin a l'arxiu acabat
#warning = FALSE #evita que els advertiments generats pel codi apareguin a l'arxiu acabat
#fig.cap = “…” agregarem un títol als resultats gràfics
#S'han de posar a l'encapçament del chunk
Per incertar equasions les necessitem en format LaTex: Codecogs o un NumberEmpire
\[ \left [ \overline{X}- z_{1-\frac{\alpha }{2}}\frac{\sigma }{\sqrt[]{n}},\overline{X}+z_{1-\frac{\alpha }{2}}\frac{\sigma }{\sqrt{n}} \right ] \]
\(\frac{\partial f}{\partial x} = 2\,\sqrt{a}\,x\)
Podem exportar el document en diferents formats (html, doc, pdf) i es marca en la primera part del RMarkdown (en aquest cas tenim html). Haurem de fer ‘knit’ del document per obtenir-ho.
Algunes llibrerises importants:
#install.packages("Rtools", repos="https://cran.rstudio.com/bin/windows/Rtools/")
library(tools, lib.loc = "D:/R-4.4.1/library")
#install.packages("MASS", "viotop") #instal·lem els paquets
library(knitr)
library("datasets")
data("iris") #carreguem les dades a RStudio
kable(head(iris)) #mostrem la informació del conjunt de dades
| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species |
|---|---|---|---|---|
| 5.1 | 3.5 | 1.4 | 0.2 | setosa |
| 4.9 | 3.0 | 1.4 | 0.2 | setosa |
| 4.7 | 3.2 | 1.3 | 0.2 | setosa |
| 4.6 | 3.1 | 1.5 | 0.2 | setosa |
| 5.0 | 3.6 | 1.4 | 0.2 | setosa |
| 5.4 | 3.9 | 1.7 | 0.4 | setosa |
packageDescription("stats") #accedir a la documentació d'un paquet (stats)
## Package: stats
## Version: 4.4.1
## Priority: base
## Title: The R Stats Package
## Author: R Core Team and contributors worldwide
## Maintainer: R Core Team <do-use-Contact-address@r-project.org>
## Contact: R-help mailing list <r-help@r-project.org>
## Description: R statistical functions.
## License: Part of R 4.4.1
## Imports: utils, grDevices, graphics
## Suggests: MASS, Matrix, SuppDists, methods, stats4
## NeedsCompilation: yes
## Encoding: UTF-8
## Enhances: Kendall, coin, multcomp, pcaPP, pspearman, robustbase
## Built: R 4.4.1; x86_64-w64-mingw32; 2024-06-14 08:21:06 UTC; windows
##
## -- File: D:/R-4.4.1/library/stats/Meta/package.rds
#source("https://bioconductor.org/biocLite.R")
#biocLite(c("GenomicFeatures","AnnotationBi" ))
#consultar https://bioconductor.org/install/
if (!require("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install(version = "3.19")
## Bioconductor version 3.19 (BiocManager 1.30.25), R 4.4.1 (2024-06-14 ucrt)
## Old packages: 'doBy', 'xfun'
BiocManager::install(c("GenomicFeatures", "AnnotationDbi"))
## Bioconductor version 3.19 (BiocManager 1.30.25), R 4.4.1 (2024-06-14 ucrt)
## Old packages: 'doBy', 'xfun'
BiocManager::install() #update
## Bioconductor version 3.19 (BiocManager 1.30.25), R 4.4.1 (2024-06-14 ucrt)
## Old packages: 'doBy', 'xfun'
| Dades | Ordre | Extensió |
|---|---|---|
| Text | read.txt | .txt |
| CSV | read.csv | .csv |
| Excel | read_excel | .xls |
| SAS | read.Sas | .sa7bdata |
Exemples: library(readr) datasets <- read_*csv(“C:/Users/mcasal8/Desktop/LAB1/CovidDeaths/CovidDeaths.csv”) View(CovidDeaths)
install.packages(readxl) library(readxl) dataset <- read_excel(“C:/Users/mcasal8/Desktop/LAB1/CovidDeaths.xls”) View(dataset)
Per exportar simplement podem fer anar les següents funcions: -
.txt: write.table(mydata,“ruta_arxivo/mydatasalida.txt”,sep=““)
.csv: write.csv(mydata, “ruta_arxivo/mydatasalida.csv”)
.xlsx: library(xlsx) write.xlsx(mydata, “ruta_arxivo/mydatasalida.xlsx”)
SPSS: library(foreing) write.foreing(mydata.”ruta_arxivo/mydatasalida.spss”, package=“SPSS”)
SAS: library(foreing) write.foreing(mydata.”ruta_arxivo/mydatasalida.sas”, package=“SAS”)
#Exemple:
flors = c(15,16,18,18,12,12,25,10,15,22,14,14,16,4,8,5,7,3,9,12) #flors nascudes per m²
tractament = c("s","s","s","s","s","s","s","s","s","s","n","n","n","n","n","n","n","n","n"
,"n")
dataflores =data.frame(tractament, flors)
write.csv(dataflores, file="Prueb1.csv") #exporto a un arxiu .csv
write.csv(dataflores, file="Prueb2.csv", row.names = F) #elimino els números de fila
write.table(dataflores, file="Prueb3.txt") #exporto a un arxiu de text
#O exportar un resultat/output
dataflores
## tractament flors
## 1 s 15
## 2 s 16
## 3 s 18
## 4 s 18
## 5 s 12
## 6 s 12
## 7 s 25
## 8 s 10
## 9 s 15
## 10 s 22
## 11 n 14
## 12 n 14
## 13 n 16
## 14 n 4
## 15 n 8
## 16 n 5
## 17 n 7
## 18 n 3
## 19 n 9
## 20 n 12
resum = summary(dataflores)
capture.output(resum, file="resum.doc")
num1<-10#assignem valor a variable num1
num2<-20#assignem valor a variable num2
num1+num2 #suma
## [1] 30
num2/num1 #divisió
## [1] 2
pes<-50 #assignem el valor del pes en kg
altura<-1.60 #assignem el valor de l'alçada en metres
IMC<-pes/((altura)^2) #valor de l'índex de massa corporal IMC
num1==num2 #comprovem si les variables són iguals
## [1] FALSE
num1<num2 #comparem num1 i num2
## [1] TRUE
num1!=num2 #comprovem si les variables són diferents
## [1] TRUE
bool1<-TRUE
bool2<-FALSE
bool1&bool2 # i
## [1] FALSE
bool1|bool2 # o
## [1] TRUE
vect <- c(1.5, 2, 3.5, 4) #crear un vector
vect #mostrar el vector
## [1] 1.5 2.0 3.5 4.0
is.vector(vect) #determinar si l'objecte és un vector
## [1] TRUE
1:22 #generem una seqüència de nombres ordenats de l'1 al 22
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
seq1<- seq(0,20, by=0.5) #generem una seqüència que va del 0 al 20 de 0.5 en 0.5
seq1
## [1] 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0
## [16] 7.5 8.0 8.5 9.0 9.5 10.0 10.5 11.0 11.5 12.0 12.5 13.0 13.5 14.0 14.5
## [31] 15.0 15.5 16.0 16.5 17.0 17.5 18.0 18.5 19.0 19.5 20.0
data1 <- c(1:20) #creem un vector a partir d'una seqüència numèrica
class(data1)
## [1] "integer"
data2 <- c(4,5) #creem un vector amb la dimensió de la matriu (nre. de files x nre. de columnes)
matriu <- matrix (data1, data2) #creem la matriu
matriu #visualitzem la matriu
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 5 9 13 17
## [2,] 2 6 10 14 18
## [3,] 3 7 11 15 19
## [4,] 4 8 12 16 20
vecta <- c(1, 2, 3, 4) #generem un vector numèric
vectb <- c("a", "b", "c") #generem un vector de text
x <- matrix(1:12, ncol = 4) #generem una matriu
llista <- list (vecta, vectb, x) #creem una llista a partir dels elements anteriors que són de diferent tipologia
llista #visualitzem la llista
## [[1]]
## [1] 1 2 3 4
##
## [[2]]
## [1] "a" "b" "c"
##
## [[3]]
## [,1] [,2] [,3] [,4]
## [1,] 1 4 7 10
## [2,] 2 5 8 11
## [3,] 3 6 9 12
llista[1] #primer element de la llista
## [[1]]
## [1] 1 2 3 4
llista [[1]] #primer element de la llista
## [1] 1 2 3 4
llista [[3]][,1] #primera columna
## [1] 1 2 3
length(llista) #elements de la llista
## [1] 3
length(llista[2])#elements del segon objecte de la llista
## [1] 1
llista
## [[1]]
## [1] 1 2 3 4
##
## [[2]]
## [1] "a" "b" "c"
##
## [[3]]
## [,1] [,2] [,3] [,4]
## [1,] 1 4 7 10
## [2,] 2 5 8 11
## [3,] 3 6 9 12
llista[[3]] <- NULL #eliminar el tercer element
llista[-3] #equivalent a l'anterior
## [[1]]
## [1] 1 2 3 4
##
## [[2]]
## [1] "a" "b" "c"
#Eliminant el primer i segon elements alhora
llista[-c(1, 2)]
## list()
Conjunts de dades:
library (MASS) #carreguem el paquet MASS que tenim prèviament instal·lat
data("birthwt")#activem les dades
View(birthwt) #mostra el conjunt de dades en format taula
dim (birthwt) #mostra el nombre d'observacions i el nombre de variables
## [1] 189 10
length(birthwt) #mostra el nombre de variables del conjunt
## [1] 10
head(birthwt, n=5) #mostra els primers cinc registres
## low age lwt race smoke ptl ht ui ftv bwt
## 85 0 19 182 2 0 0 0 1 0 2523
## 86 0 33 155 3 0 0 0 0 3 2551
## 87 0 20 105 1 1 0 0 0 1 2557
## 88 0 21 108 1 1 0 0 1 2 2594
## 89 0 18 107 1 1 0 0 1 0 2600
names(birthwt) #mostra el nom de les variables
## [1] "low" "age" "lwt" "race" "smoke" "ptl" "ht" "ui" "ftv"
## [10] "bwt"
genere <- c(1, 2, 1, 1, 1, 2, 2, 2, 1, 2)
edat <- c(24, 25, 26, 24, 25, 27, 21, 22, 25, 26)
fuma <- c("no", "sí", "no", "sí", "no", "no", "sí", "no", "no", "sí")
MiDataf <- data.frame(genere, edat, fuma)
MiDataf
## genere edat fuma
## 1 1 24 no
## 2 2 25 sí
## 3 1 26 no
## 4 1 24 sí
## 5 1 25 no
## 6 2 27 no
## 7 2 21 sí
## 8 2 22 no
## 9 1 25 no
## 10 2 26 sí
MiDataf[3:5, ] #dades dels elements de les files de la 3 a la 5
## genere edat fuma
## 3 1 26 no
## 4 1 24 sí
## 5 1 25 no
MiDataf[,1] #dades de tots els elements de la primera columna
## [1] 1 2 1 1 1 2 2 2 1 2
MiDataf$genere #variable gènere
## [1] 1 2 1 1 1 2 2 2 1 2
MiDataf$fuma #variable fuma
## [1] "no" "sí" "no" "sí" "no" "no" "sí" "no" "no" "sí"
mean(MiDataf$edat[MiDataf$fuma=="no"]) #mitjana de l'edat dels pacients que no fumen
## [1] 24.83333
attach(MiDataf) #enganxem el data frame
## .GlobalEnv emmascara els següents objectes:
##
## edat, fuma, genere
table(fuma, genere) #generem una taula creuada amb la variable fuma i la variable gènere
## genere
## fuma 1 2
## no 4 2
## sí 1 3
detach(MiDataf) #desenganxem el data frame
with(MiDataf, {
edat_dia = edat*365
edat_dia}) #usem l'ordre with per calcular l'edat en dies i no en anys
## [1] 8760 9125 9490 8760 9125 9855 7665 8030 9125 9490
#creem un primer data frame sobre malalties
Dataf_Enf1 = data.frame (malaltia = c("diabetis", "colesterol", "hipertensió", "hipotensió"), individus= c("ind1", "ind2", "ind3", "ind4"))
Dataf_Enf1 #observem els elements d'Enf1
## malaltia individus
## 1 diabetis ind1
## 2 colesterol ind2
## 3 hipertensió ind3
## 4 hipotensió ind4
#creem un segon data frame idèntic en variables
Dataf_Enf2 = data.frame (malaltia = c("diabetis", "colesterol", "hipertensió", "hipotensió"), individus= c("ind21", "ind22", "ind23", "ind24"))
Dataf_Enf2 #observem els elements d'Enf2
## malaltia individus
## 1 diabetis ind21
## 2 colesterol ind22
## 3 hipertensió ind23
## 4 hipotensió ind24
#combinem els 2 data frames en 1
Dataf_Enf = rbind(Dataf_Enf1, Dataf_Enf2)
Dataf_Enf
## malaltia individus
## 1 diabetis ind1
## 2 colesterol ind2
## 3 hipertensió ind3
## 4 hipotensió ind4
## 5 diabetis ind21
## 6 colesterol ind22
## 7 hipertensió ind23
## 8 hipotensió ind24
Indiv1 <- c("I213", "I214", "I215", "I216", "I217")
Medic1 <- c("Paracetamol", "Ibuprofèn", "Aspirina", "Ibuprofèn", "Paracetamol")
Past_dia <- c(2, 3, 2, 2, 2)
df_medica1 <- data.frame (Indiv1, Medic1, Past_dia)
df_medica1
## Indiv1 Medic1 Past_dia
## 1 I213 Paracetamol 2
## 2 I214 Ibuprofèn 3
## 3 I215 Aspirina 2
## 4 I216 Ibuprofèn 2
## 5 I217 Paracetamol 2
Indiv2 <- c("I213", "I214", "I215", "I216", "I217")
Medic2 <- c("Paracetamol", "Ibuprofèn", "Aspirina", "Ibuprofèn", "Paracetamol")
Past_dia <- c(2, 3, 2, 2, 2)
df_medica2 <- data.frame (Indiv1, Medic1, Past_dia)
df_medica2
## Indiv1 Medic1 Past_dia
## 1 I213 Paracetamol 2
## 2 I214 Ibuprofèn 3
## 3 I215 Aspirina 2
## 4 I216 Ibuprofèn 2
## 5 I217 Paracetamol 2
merge(df_medica1, df_medica2)
## Indiv1 Medic1 Past_dia
## 1 I213 Paracetamol 2
## 2 I214 Ibuprofèn 3
## 3 I215 Aspirina 2
## 4 I216 Ibuprofèn 2
## 5 I217 Paracetamol 2
set.seed(999) #llavor aleatòria
metge_id <- 1:10 #generem una variable amb una llista ordenada per a l'id de cada metge
metge_nom <- c("Ona", "Jordi", "Oriol", "Pau", "Esther", "Xavi", "Jan", "Marta", "Anna", "Abril") #variables amb el nom de cada professional
metge_sal <- round(rnorm(10, mean = 1500, sd = 200)) #salari estimat aleatori que cobra cada professional
metge_edat <- round(rnorm(10, mean = 50, sd = 8)) #variable aleatòria sobre l'edat
metge_espec <- c("Neuro", "Orto", "Gine", "Trauma",rep("General",6))#especialitat de cada professional
df_Med_1 <- data.frame(id = metge_id[1:8], nom = metge_nom[1:8], salari_mensual = metge_sal[1:8])
df_Med_2 <- data.frame(id = metge_id[-5], nom = metge_nom[-5], edat = metge_edat[-5], position = metge_espec[-5])
df_Med_1
## id nom salari_mensual
## 1 1 Ona 1444
## 2 2 Jordi 1237
## 3 3 Oriol 1659
## 4 4 Pau 1554
## 5 5 Esther 1445
## 6 6 Xavi 1387
## 7 7 Jan 1124
## 8 8 Marta 1247
df_Med_2
## id nom edat position
## 1 1 Ona 61 Neuro
## 2 2 Jordi 51 Orto
## 3 3 Oriol 58 Gine
## 4 4 Pau 51 Trauma
## 5 6 Xavi 39 General
## 6 7 Jan 51 General
## 7 8 Marta 51 General
## 8 9 Anna 57 General
## 9 10 Abril 33 General
merge(x=df_Med_1, y=df_Med_2) #escriure x o i és opcional en aquesta ordre. Unió interna
## id nom salari_mensual edat position
## 1 1 Ona 1444 61 Neuro
## 2 2 Jordi 1237 51 Orto
## 3 3 Oriol 1659 58 Gine
## 4 4 Pau 1554 51 Trauma
## 5 6 Xavi 1387 39 General
## 6 7 Jan 1124 51 General
## 7 8 Marta 1247 51 General
merge (x=df_Med_1, y=df_Med_2, all = TRUE) #combinació completa
## id nom salari_mensual edat position
## 1 1 Ona 1444 61 Neuro
## 2 2 Jordi 1237 51 Orto
## 3 3 Oriol 1659 58 Gine
## 4 4 Pau 1554 51 Trauma
## 5 5 Esther 1445 NA <NA>
## 6 6 Xavi 1387 39 General
## 7 7 Jan 1124 51 General
## 8 8 Marta 1247 51 General
## 9 9 Anna NA 57 General
## 10 10 Abril NA 33 General
Df_UniIzq <- merge(x=df_Med_1, y=df_Med_2, all.x= TRUE) #unió esquerra
Df_UniIzq
## id nom salari_mensual edat position
## 1 1 Ona 1444 61 Neuro
## 2 2 Jordi 1237 51 Orto
## 3 3 Oriol 1659 58 Gine
## 4 4 Pau 1554 51 Trauma
## 5 5 Esther 1445 NA <NA>
## 6 6 Xavi 1387 39 General
## 7 7 Jan 1124 51 General
## 8 8 Marta 1247 51 General
Df_UniDer <- merge(x=df_Med_1, y=df_Med_2, all.i= TRUE) #unió dreta
Df_UniDer
## id nom salari_mensual edat position
## 1 1 Ona 1444 61 Neuro
## 2 2 Jordi 1237 51 Orto
## 3 3 Oriol 1659 58 Gine
## 4 4 Pau 1554 51 Trauma
## 5 6 Xavi 1387 39 General
## 6 7 Jan 1124 51 General
## 7 8 Marta 1247 51 General
Df_Creuat <- merge (x=df_Med_1, y=df_Med_2, by=NULL) #unió creuada
head(Df_Creuat) #posem només les primeres files de la combinació
## id.x nom.x salari_mensual id.y nom.y edat position
## 1 1 Ona 1444 1 Ona 61 Neuro
## 2 2 Jordi 1237 1 Ona 61 Neuro
## 3 3 Oriol 1659 1 Ona 61 Neuro
## 4 4 Pau 1554 1 Ona 61 Neuro
## 5 5 Esther 1445 1 Ona 61 Neuro
## 6 6 Xavi 1387 1 Ona 61 Neuro
Id<- c("I1","I2","I3","I4","I5","I6","I7","I8","I9","I10","I11","I12","I13","I14","I15","I16","I17","I18","I19","I20","I21","I22")
Edat <- c(23,24,21,22,23,25,26,24,21,22,23,25,26,24,22,21,25,26,24,21,25,27)
Sexe <- c(1,2,1,1,1,2,2,2,1,2,1,2,2,2,1,1,1,2,2,2,1,2)
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)
Altura <- c(165,154,178,165,164,175,182,165,178,165,158,183,184,164,189,167,182,179,165,158,183,184)
Pacients <- data.frame (Id, Edat, Sexe, Pes, Altura)
#Seleccionar amb només les variables Id, Edat i Sexe.
Prova1<- subset(Pacients, select = c(Id,Edat,Sexe))
Prova1
## Id Edat Sexe
## 1 I1 23 1
## 2 I2 24 2
## 3 I3 21 1
## 4 I4 22 1
## 5 I5 23 1
## 6 I6 25 2
## 7 I7 26 2
## 8 I8 24 2
## 9 I9 21 1
## 10 I10 22 2
## 11 I11 23 1
## 12 I12 25 2
## 13 I13 26 2
## 14 I14 24 2
## 15 I15 22 1
## 16 I16 21 1
## 17 I17 25 1
## 18 I18 26 2
## 19 I19 24 2
## 20 I20 21 2
## 21 I21 25 1
## 22 I22 27 2
#Seleccionar totes les files que tenen una edat més gran o igual que 24 anys
Prova2<- subset(Pacients, Edat >= 24)
Prova2
## Id Edat Sexe Pes Altura
## 2 I2 24 2 81.2 154
## 6 I6 25 2 78.6 175
## 7 I7 26 2 67.9 182
## 8 I8 24 2 100.2 165
## 12 I12 25 2 67.5 183
## 13 I13 26 2 87.4 184
## 14 I14 24 2 99.7 164
## 17 I17 25 1 65.4 182
## 18 I18 26 2 73.7 179
## 19 I19 24 2 85.1 165
## 21 I21 25 1 54.8 183
## 22 I22 27 2 103.4 184
#Seleccionar totes les files que tenen una edat més petita que 25 anys i no incloure a la columna Sexe
Prova3<- subset(Pacients, Edat > 25, select = -c(Sexe))
Prova3
## Id Edat Pes Altura
## 7 I7 26 67.9 182
## 13 I13 26 87.4 184
## 18 I18 26 73.7 179
## 22 I22 27 103.4 184
#Seleccionar només els registres que tenen una alçada més petita o igual que 165 cm o més gran que 175 cm
Prova4<- subset(Pacients, Altura <= 165 | Altura > 175)
Prova4
## Id Edat Sexe Pes Altura
## 1 I1 23 1 76.5 165
## 2 I2 24 2 81.2 154
## 3 I3 21 1 79.3 178
## 4 I4 22 1 59.5 165
## 5 I5 23 1 67.3 164
## 7 I7 26 2 67.9 182
## 8 I8 24 2 100.2 165
## 9 I9 21 1 97.8 178
## 10 I10 22 2 56.4 165
## 11 I11 23 1 65.4 158
## 12 I12 25 2 67.5 183
## 13 I13 26 2 87.4 184
## 14 I14 24 2 99.7 164
## 15 I15 22 1 87.6 189
## 17 I17 25 1 65.4 182
## 18 I18 26 2 73.7 179
## 19 I19 24 2 85.1 165
## 20 I20 21 2 61.2 158
## 21 I21 25 1 54.8 183
## 22 I22 27 2 103.4 184
set.seed(999)
f <- nrow(Pacients) #f és la mida del data frame a partir del nombre de files.
n <- 3 #n és la mida de la nova mostra aleatòria.
i <- sample(1:f, n, replace=FALSE) #i seran les posicions de les observacions aleatòries.
Prova5 <- Pacients[i,] #La nova mostra aleatòria
Prova5
## Id Edat Sexe Pes Altura
## 4 I4 22 1 59.5 165
## 7 I7 26 2 67.9 182
## 9 I9 21 1 97.8 178
data(women)
Prova6 <- filter(women, "height" > 58) #filtrar files segons una condició
Prova6
## Time Series:
## Start = 1
## End = 15
## Frequency = 1
## [,1] [,2]
## 1 58 115
## 2 59 117
## 3 60 120
## 4 61 123
## 5 62 126
## 6 63 129
## 7 64 132
## 8 65 135
## 9 66 139
## 10 67 142
## 11 68 146
## 12 69 150
## 13 70 154
## 14 71 159
## 15 72 164
“data.frame” %>% filter(“condicions”) -> “Nom_nou” #Primera opció “Nom_nou” <- “data.frame” %>% filter(“condicions”) #Segona opció
plot(iris) #generar gràfics
hist(iris$Sepal.Length) #histogrames
hist(iris$Sepal.Length, breaks=c(4,5,6,7,8),
main="Histograma de longitud del sèpal",
xlab="cm", ylab="Freqüència",
xlim=c(2, 10), ylim=c(0, 60),
col="blue") #creem un histograma amb títols, intervals, eixos i especifiquem el color blau
| Opcions | Significat |
|---|---|
| main | Títol de la taula |
| xlab | Eix de les x |
| ylab | Eix de les y |
| breaks | Intervals de l’histograma |
| col | Color del gràfic |
| abline | Línia superposada |
boxplot(iris) #genero el boxplot amb totes les variables
boxplot(iris[ ,-5], main="Diagrames de caixa",
xlab="Dimensions", ylab="cm",
col=c("red", "blue", "orange", "yellow"))
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.
library()
sessionInfo()
## R version 4.4.1 (2024-06-14 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 10 x64 (build 19045)
##
## Matrix products: default
##
##
## locale:
## [1] LC_COLLATE=Catalan_Spain.utf8 LC_CTYPE=Catalan_Spain.utf8
## [3] LC_MONETARY=Catalan_Spain.utf8 LC_NUMERIC=C
## [5] LC_TIME=Catalan_Spain.utf8
##
## time zone: Europe/Madrid
## tzcode source: internal
##
## attached base packages:
## [1] tools stats graphics grDevices utils datasets methods
## [8] base
##
## other attached packages:
## [1] MASS_7.3-61 BiocManager_1.30.25 knitr_1.48
##
## loaded via a namespace (and not attached):
## [1] digest_0.6.37 R6_2.5.1 fastmap_1.2.0 xfun_0.47
## [5] cachem_1.1.0 htmltools_0.5.8.1 rmarkdown_2.28 lifecycle_1.0.4
## [9] cli_3.6.3 sass_0.4.9 jquerylib_0.1.4 compiler_4.4.1
## [13] highr_0.11 rstudioapi_0.16.0 evaluate_1.0.0 bslib_0.8.0
## [17] yaml_2.3.10 rlang_1.1.4 jsonlite_1.8.9
#installed.packages()
#install.packages("MASS")
#install.packages("survival")
library (MASS)
library (survival)
packageDescription("stats")
## Package: stats
## Version: 4.4.1
## Priority: base
## Title: The R Stats Package
## Author: R Core Team and contributors worldwide
## Maintainer: R Core Team <do-use-Contact-address@r-project.org>
## Contact: R-help mailing list <r-help@r-project.org>
## Description: R statistical functions.
## License: Part of R 4.4.1
## Imports: utils, grDevices, graphics
## Suggests: MASS, Matrix, SuppDists, methods, stats4
## NeedsCompilation: yes
## Encoding: UTF-8
## Enhances: Kendall, coin, multcomp, pcaPP, pspearman, robustbase
## Built: R 4.4.1; x86_64-w64-mingw32; 2024-06-14 08:21:06 UTC; windows
##
## -- File: D:/R-4.4.1/library/stats/Meta/package.rds
??MASS
## starting httpd help server ... fet
??Survival
Busqueu informació sobre el paquet Rcmdr (R Commander) des de la consola.
#install.packages("Rcmdr") #No tinc el paquet, per tant, l'he d'instal·lar 1r
library(Rcmdr)
## S'està carregant el paquet requerit: splines
## S'està carregant el paquet requerit: RcmdrMisc
## S'està carregant el paquet requerit: car
## S'està carregant el paquet requerit: carData
## S'està carregant el paquet requerit: sandwich
## S'està carregant el paquet requerit: effects
## lattice theme set by effectsTheme()
## See ?effectsTheme for details.
## El GUI del Commander només s'inicia a les sessions interactives
##
## S'està adjuntant el paquet: 'Rcmdr'
## L'objecte següent està emmascarat per 'package:base':
##
## errorCondition
??Rcmdr
Importeu un arxiu de text i busqueu un summary() de tres variables que trieu.
Triem el següent: Janosi, A., Steinbrunn, W., Pfisterer, M., & Detrano, R. (1989). Heart Disease [Dataset]. UCI Machine Learning Repository. https://doi.org/10.24432/C52P4X.
heart_data <- read.table("D:\\Bioinformàtica i Bioestadística\\Programari per a l'anàlisi de dades\\heart+disease\\processed.switzerland.data", header = FALSE, sep = ",")
View(heart_data) #per saber què són cada columna, hi ha documentació que ens diu què és cada una
#Consultant-la veiem que, per exemple, l'edat, el sexe i thalach (maximum heart rate achieved) poden ser interessants de mirar en un dataset d'aquest tipus. Corresponen a la columna 1 (age), columna 2 (sex) i columna 8 (thalach)
summary(heart_data[, c(1, 2,8)])
## V1 V2 V8
## Min. :32.00 Min. :0.0000 Length:123
## 1st Qu.:51.00 1st Qu.:1.0000 Class :character
## Median :56.00 Median :1.0000 Mode :character
## Mean :55.32 Mean :0.9187
## 3rd Qu.:61.50 3rd Qu.:1.0000
## Max. :74.00 Max. :1.0000Importeu un arxiu «.csv» i busqueu un fivenum() de dues variables que us semblin rellevants per a l’estudi.
Triem aquest dataset: Cortez, P., Cerdeira, A., Almeida, F., Matos, T., & Reis, J. (2009). Wine Quality [Dataset]. UCI Machine Learning Repository. https://doi.org/10.24432/C56S3T.
wine_data <- read.csv("D:\\Bioinformàtica i Bioestadística\\Programari per a l'anàlisi de dades\\wine+quality\\winequality-red.csv", header = TRUE, sep = ";")
View(wine_data) #Consultant-la veiem que, poden ser rellevants el pH del vi o el % d'alcohol. Aquestes columnes les tenim amb els noms
fivenum(wine_data$pH)
## [1] 2.74 3.21 3.31 3.40 4.01
fivenum(wine_data$alcohol)
## [1] 8.4 9.5 10.2 11.1 14.9A 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")
summary(anorexia)
## Treat Prewt Postwt
## CBT :29 Min. :70.00 Min. : 71.30
## Cont:26 1st Qu.:79.60 1st Qu.: 79.33
## FT :17 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
head(anorexia)
## 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
#Per veure els tipus de dades
dim(anorexia) #nº obs i nº var, respectivament
## [1] 72 3
names(anorexia) #nom var
## [1] "Treat" "Prewt" "Postwt"
anyNA(anorexia) #mirem si hi ha NA
## [1] FALSE
is.null(anorexia) #mirem si hi ha NULLs
## [1] FALSE
#la llibreria dplyr podria ajudar-nos a ger els canvis mencionats
library(dplyr)
##
## S'està adjuntant el paquet: 'dplyr'
## L'objecte següent està emmascarat per 'package:car':
##
## recode
## L'objecte següent està emmascarat per 'package:MASS':
##
## select
## Els següents objectes estan emmascarats des de 'package:stats':
##
## filter, lag
## Els següents objectes estan emmascarats des de 'package:base':
##
## intersect, setdiff, setequal, union
anorexia$Treat <- recode(anorexia$Treat,CBT = "Cogn Beh Tr",Cont = "Contr",FT = "Fam Tr")
# si volguessim veure si s'ha canviat mirem el dataset: View(anorexia)
Exporteu les dades biopsy del paquet MASS a un arxiu «.csv.»
library(MASS)
data("biopsy")
head(biopsy)
## ID V1 V2 V3 V4 V5 V6 V7 V8 V9 class
## 1 1000025 5 1 1 1 2 1 3 1 1 benign
## 2 1002945 5 4 4 5 7 10 3 2 1 benign
## 3 1015425 3 1 1 1 2 2 3 1 1 benign
## 4 1016277 6 8 8 1 3 4 3 7 1 benign
## 5 1017023 4 1 1 3 2 1 3 1 1 benign
## 6 1017122 8 10 10 8 7 10 9 7 1 malignant
write.csv("biopsy", file="D:\\Bioinformàtica i Bioestadística\\Programari per a l'anàlisi de dades\\biopsy.csv")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.
library(MASS)
data("Melanoma")
head(Melanoma)
## time status sex age year thickness ulcer
## 1 10 3 1 76 1972 6.76 1
## 2 30 3 1 56 1968 0.65 0
## 3 35 2 1 41 1977 1.34 0
## 4 99 3 0 71 1968 2.90 0
## 5 185 1 1 52 1965 12.08 1
## 6 204 1 1 28 1971 4.84 1
#install.packages("openxlsx")
library(openxlsx)
write.xlsx("Melanoma", file="D:\\Bioinformàtica i Bioestadística\\Programari per a l'anàlisi de dades\\melanoma_xlsx.xlsx")
#install.packages("foreign")
library(foreign)
write.foreign(Melanoma, "D:\\Bioinformàtica i Bioestadística\\Programari per a l'anàlisi de dades\\melanoma_spss.spss", codefile = "code_mela_spss", package="SPSS")
write.foreign(Melanoma, "D:\\Bioinformàtica i Bioestadística\\Programari per a l'anàlisi de dades\\melanoma_sas.sas", codefile = "code_mela_sas", package="SAS")
Genereu un resum (summary) de la variable age de melanoma i deseu la sortida que us apareix en un document .doc
sum_melanoma <- summary(Melanoma)
head(sum_melanoma)
## time status sex age year
## Min. : 10 Min. :1.00 Min. :0.0000 Min. : 4.00 Min. :1962
## 1st Qu.:1525 1st Qu.:1.00 1st Qu.:0.0000 1st Qu.:42.00 1st Qu.:1968
## Median :2005 Median :2.00 Median :0.0000 Median :54.00 Median :1970
## Mean :2153 Mean :1.79 Mean :0.3854 Mean :52.46 Mean :1970
## 3rd Qu.:3042 3rd Qu.:2.00 3rd Qu.:1.0000 3rd Qu.:65.00 3rd Qu.:1972
## Max. :5565 Max. :3.00 Max. :1.0000 Max. :95.00 Max. :1977
## thickness ulcer
## Min. : 0.10 Min. :0.000
## 1st Qu.: 0.97 1st Qu.:0.000
## Median : 1.94 Median :0.000
## Mean : 2.92 Mean :0.439
## 3rd Qu.: 3.56 3rd Qu.:1.000
## Max. :17.42 Max. :1.000Busqueu 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.
#> Suicide.Rates.Overview.1985.to.2016 <- read.csv("D:/Bioinformàtica i Bioestadística/Programari per a l'anàlisi de dades/Suicide Rates Overview 1985 to 2016.csv", header=FALSE)
#> View(Suicide.Rates.Overview.1985.to.2016)
Aquesta és una llista d’alguns repositoris de dades que podem usar: https://ouhsc.edu/bserdac/dthompso/web/statres.htm https://guides.lib.berkeley.edu/publichealth/healthstatistics/rawdata https://archive.ics.uci.edu/datasets
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:
Quina és l’edat màxima de les mares del conjunt de dades?
library (MASS)
data("birthwt")
summary(birthwt$age) #podem veure-ho mirant en la columna age o utilitzant la funció max
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 14.00 19.00 23.00 23.24 26.00 45.00
max(birthwt$age)
## [1] 45Quina és l’edat mínima de les mares del conjunt de dades?
summary(birthwt$age)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 14.00 19.00 23.00 23.24 26.00 45.00
min(birthwt$age)
## [1] 14Quin és el rang d’edat de les mares?
summary(birthwt$age)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 14.00 19.00 23.00 23.24 26.00 45.00
Serà entre el mínim (14) i el màxim (45), per tant, el rang és [14-45]
Fumava la mare que el seu nounat era el de menys pes?
#bwt és el pes del nounat en gr
min(birthwt$bwt)
## [1] 709
birthwt$smoke[which.min(birthwt$bwt)]
## [1] 1
En la columna “smoke” hi ha els casos 0 i casos 1, els quals són no fumadores i fumadores respectivament. La mare amb el nounat de menys pes si fumava.
Quant va pesar el nounat la mare del qual tenia l’edat màxima?
max(birthwt$age)
## [1] 45
birthwt$bwt[which.max(birthwt$age)]
## [1] 4990Feu una llista els pesos dels nounats, les mares dels quals visitaran menys de dues vegades el metge durant el primer trimestre.
# ftv és el nº de visites mèdiques durant el 1r trimestre, menys de 2 vegades, no 2 o menys, per tant;
pes_menys_dues_visites <- birthwt$bwt[birthwt$ftv < 2]
#aquí veiem algunes característiques del nou objecte
head(pes_menys_dues_visites)
## [1] 2523 2557 2600 2622 2637 2637
summary(pes_menys_dues_visites)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 709 2381 2977 2943 3558 4990
length(pes_menys_dues_visites)
## [1] 147A 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ó.
library (MASS)
data("anorexia")
pre_post_matriu <- as.matrix(anorexia[, c("Prewt", "Postwt")])
pre_post_matriu
## 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
## 7 87.3 75.1
## 8 75.1 86.7
## 9 80.6 73.5
## 10 78.4 84.6
## 11 77.6 77.4
## 12 88.7 79.5
## 13 81.3 89.6
## 14 78.1 81.4
## 15 70.5 81.8
## 16 77.3 77.3
## 17 85.2 84.2
## 18 86.0 75.4
## 19 84.1 79.5
## 20 79.7 73.0
## 21 85.5 88.3
## 22 84.4 84.7
## 23 79.6 81.4
## 24 77.5 81.2
## 25 72.3 88.2
## 26 89.0 78.8
## 27 80.5 82.2
## 28 84.9 85.6
## 29 81.5 81.4
## 30 82.6 81.9
## 31 79.9 76.4
## 32 88.7 103.6
## 33 94.9 98.4
## 34 76.3 93.4
## 35 81.0 73.4
## 36 80.5 82.1
## 37 85.0 96.7
## 38 89.2 95.3
## 39 81.3 82.4
## 40 76.5 72.5
## 41 70.0 90.9
## 42 80.4 71.3
## 43 83.3 85.4
## 44 83.0 81.6
## 45 87.7 89.1
## 46 84.2 83.9
## 47 86.4 82.7
## 48 76.5 75.7
## 49 80.2 82.6
## 50 87.8 100.4
## 51 83.3 85.2
## 52 79.7 83.6
## 53 84.5 84.6
## 54 80.8 96.2
## 55 87.4 86.7
## 56 83.8 95.2
## 57 83.3 94.3
## 58 86.0 91.5
## 59 82.5 91.9
## 60 86.7 100.3
## 61 79.6 76.7
## 62 76.9 76.8
## 63 94.2 101.6
## 64 73.4 94.9
## 65 80.5 75.2
## 66 81.6 77.8
## 67 82.1 95.5
## 68 77.6 90.7
## 69 83.5 92.5
## 70 89.9 93.8
## 71 86.0 91.7
## 72 87.3 98.0
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Í
Seleccioneu els registres amb edat > 22.
mes_22_edat <- Tract_Pulmo[Tract_Pulmo$Edat > 22,]
mes_22_edat
## 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ÍSeleccioneu l’element 3 de la columna 4 del conjunt de dades (comptant l’identificador).
element <- Tract_Pulmo[3,4]
element
## [1] 79.3Useu l’ordre subset() per seleccionar totes les files que tenen una edat més petita que 27 anys i sense incloure la columna Alt.
apartat_c <- subset(Tract_Pulmo, Edat<27, -Alt)
apartat_c
## 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 NOIncorporeu 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 identificadorade 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).
library(MASS)
data("ChickWeight")
plot(ChickWeight$Time, ChickWeight$weight,
main = "Dispersió del pes",
xlab = "Temps (dies)",
ylab = "Pes (grams)",
col = ChickWeight$Diet, # Color per cada dieta
pch = 19) # Tipus de punt
#La variable Time és el temps (dies) des del naixement fins què es va mesurar el pes d'un pollet
boxplot(Time ~ Diet, data = ChickWeight,
main = "Diagrama de caixa",
xlab = "Dieta",
ylab = "Temps (dies)",
col = c("lightblue", "lightgreen", "lightpink", "lightyellow"))
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.
library(MASS)
data("anorexia")
anorexia_treat_df <- data.frame(tractament = anorexia$Treat,
canvi_pes = anorexia$Postwt - anorexia$Prewt)
head(anorexia_treat_df)
## tractament canvi_pes
## 1 Cont -0.5
## 2 Cont -9.3
## 3 Cont -5.4
## 4 Cont 12.3
## 5 Cont -2.0
## 6 Cont -10.2
#Volem aquells que han guanyat pes, per tant, valors positius
anorexia_guany<- subset(anorexia_treat_df, canvi_pes > 0)
#el tractament ha de ser "Cont"
anorexia_treat_C_df <- subset(anorexia_guany, tractament == "Cont")
head(anorexia_treat_C_df)
## tractament canvi_pes
## 4 Cont 12.3
## 8 Cont 11.6
## 10 Cont 6.2
## 13 Cont 8.3
## 14 Cont 3.3
## 15 Cont 11.3
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:
En RStudio, creeu un document R Markdown.
Genereu el document amb Knit.
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.
Resoleu els apartats següents:
Creeu un conjunt de dades inventat amb R. Ha de contenir trenta observacions (quinze per a homes i quinze per a dones) per a sis variables amb aquestes característiques: Variable Nom Característiques Identificador Id caràcter Edat Edat numèrica Genere Gene 2 valors 1 = dona, 2 = home Tractament Tract Factor. Tres tipus de tractament (A, B i C) Pes Pes numèrica (en kg) Altura Alt numèrica (en cm)
Identificador <- paste0("ID", 1:30)
Edat <- sample(18:65, 30, replace = TRUE)
Genere <- rep(c(1, 2), each = 15) # 1 = dona, 2 = home
Tractament <- sample(c("A", "B", "C"), 30, replace = TRUE)
Pes <- round(runif(30, 50, 100), 1) # Pes entre 50 i 100 kg
Altura <- round(runif(30, 150, 200), 1) # Alçada entre 150 i 200 cm
data_cas_practic <- data.frame(Identificador, Edat, Genere, Tractament, Pes, Altura)Busqueu informació del vostre conjunt de dades i de les vostres variables.
summary(data_cas_practic)
## Identificador Edat Genere Tractament
## Length:30 Min. :18.0 Min. :1.0 Length:30
## Class :character 1st Qu.:26.0 1st Qu.:1.0 Class :character
## Mode :character Median :38.5 Median :1.5 Mode :character
## Mean :38.8 Mean :1.5
## 3rd Qu.:49.5 3rd Qu.:2.0
## Max. :60.0 Max. :2.0
## Pes Altura
## Min. :50.70 Min. :152.5
## 1st Qu.:63.30 1st Qu.:165.2
## Median :75.20 Median :172.8
## Mean :75.81 Mean :175.1
## 3rd Qu.:85.92 3rd Qu.:191.0
## Max. :98.00 Max. :199.8
head(data_cas_practic)
## Identificador Edat Genere Tractament Pes Altura
## 1 ID1 24 1 B 51.0 193.9
## 2 ID2 55 1 A 84.8 154.2
## 3 ID3 36 1 A 75.3 192.6
## 4 ID4 60 1 B 58.3 197.9
## 5 ID5 35 1 A 86.0 193.3
## 6 ID6 18 1 B 75.1 189.9Creeu una nova variable a partir d’alguna de les que tinguem. Per exemple, podeu calcular l’IMC (IMC = pes (kg)/ [alçada (m)]2 i incloeu la nova variable en el conjunt de dades.
data_cas_practic$IMC <-
round(data_cas_practic$Pes/(data_cas_practic$Altura/100)^2, 2)
head(data_cas_practic)
## Identificador Edat Genere Tractament Pes Altura IMC
## 1 ID1 24 1 B 51.0 193.9 13.56
## 2 ID2 55 1 A 84.8 154.2 35.66
## 3 ID3 36 1 A 75.3 192.6 20.30
## 4 ID4 60 1 B 58.3 197.9 14.89
## 5 ID5 35 1 A 86.0 193.3 23.02
## 6 ID6 18 1 B 75.1 189.9 20.83Creeu dos data frames diferenciats per a homes i dones amb dos noms diferents: Df_Homes i Df_Dones.
df_dones <- subset(data_cas_practic, Genere == 1)
df_homes <- subset(data_cas_practic, Genere == 2)
head(df_dones)
## Identificador Edat Genere Tractament Pes Altura IMC
## 1 ID1 24 1 B 51.0 193.9 13.56
## 2 ID2 55 1 A 84.8 154.2 35.66
## 3 ID3 36 1 A 75.3 192.6 20.30
## 4 ID4 60 1 B 58.3 197.9 14.89
## 5 ID5 35 1 A 86.0 193.3 23.02
## 6 ID6 18 1 B 75.1 189.9 20.83
head(df_homes)
## Identificador Edat Genere Tractament Pes Altura IMC
## 16 ID16 33 2 C 57.1 152.5 24.55
## 17 ID17 46 2 A 73.7 192.0 19.99
## 18 ID18 60 2 A 78.5 164.9 28.87
## 19 ID19 19 2 C 80.6 172.9 26.96
## 20 ID20 26 2 C 61.1 172.6 20.51
## 21 ID21 50 2 A 85.7 173.6 28.44Combineu de nou els dos fitxers anteriors i creeu el primer de nou amb l’ordre rbind().
genere <- rbind(df_dones,df_homes)
head(genere)
## Identificador Edat Genere Tractament Pes Altura IMC
## 1 ID1 24 1 B 51.0 193.9 13.56
## 2 ID2 55 1 A 84.8 154.2 35.66
## 3 ID3 36 1 A 75.3 192.6 20.30
## 4 ID4 60 1 B 58.3 197.9 14.89
## 5 ID5 35 1 A 86.0 193.3 23.02
## 6 ID6 18 1 B 75.1 189.9 20.83