1. Introducció

Markdown és una sintaxi per crear documents en múltiples formats (HTML, PDF, WORD, etc.). És possible combinar text formatejat i codi en R. Tot i que ve instal·lat amb RStudio, si teniu algun problema podeu instal·lar el paquet RMarkdown.

Per formatejar el text:

També pots incorporar enllaços a pàgines web: http://campusvirtual.ub.edu.

Per fer una cita textual:

You can have data without information, but you cannot have information without data.

Un cop preparat el document, cal compilar amb el butó Knit triant el format de sortida.

Podem provar a generar aquest mateix document en HTML, PDF o WORD. És possible que, per crear documents en PDF, necessiteu el paquet TinyTeX.

1.1 Codi R dins d’un fitxer RMarkdown

És el que es coneix com chunks, que estan identificats amb ```{r}

a <- 5
b <- 3
c <- a+b
print(c)
## [1] 8

Un altre exemple de chunk

##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

1.2 Paràmetres en un chunk

  • include = FALSE: ni el codi ni el resultat apareix en el document, però s’executa i es pot aprofitar en un altre chunk.

  • echo = FALSE: no es mostra el codi, però sí el resultat.

  • message = FALSE: evita que els missatges que genera el codi apareguin al document.

  • warning = FALSE: evita que els missatges de warning generats pel codi apareguin al document.

  • fig.cap = “…” : afegeix un títol a un resultat gràfic

1.3 Mostrar un dataframe

Per defecte, un dataframe es veu igual que a RStudio.

head(mtcars, 10)
##                    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
## Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4

Hi ha diversos paquets que permeten fer taules. Una opció és la funció kabble del paquet knitr. Per exemple:

Característiques dels quatre primers cotxes
mpg cyl disp
Mazda RX4 21.0 6 160
Mazda RX4 Wag 21.0 6 160
Datsun 710 22.8 4 108
Hornet 4 Drive 21.4 6 258

2. Gràfics

És possible incorporar gràfics al document. Per exemple:

El parámetro echo = FALSE impedeix que s’imprimeixi el codi, només el gràfic.

En el següent exemple, no l’hem fet servir. Compara el resultat:

plot(cars) # També admet missatges explicatius com aquest
Relació entre temperatura i pressió

Relació entre temperatura i pressió

2.1 Heatmap

Presentarem ara un informe gràfic del retard mensual d’algunes companyies aèries.

Aquestes són les dades que hem recopilat:

Mitjana de minuts de retard durant 2020
Companyia Gener Febrer Març Abril Maig Juny Juliol Agost Setembre Octubre Novembre Desembre
Alitalia 28 30 26 20 20 32 15 12 6 2 3 16
Easyjet 118 176 121 75 143 5 8 163 145 173 148 145
Emirates 20 219 211 23 123 50 60 90 150 200 240 308
Iberia 200 490 400 390 440 120 360 370 500 310 250 475
KLM 9 10 7 5 8 14 7 5 1 2 4 7
Lufthansa 365 247 180 113 117 177 330 382 348 345 100 184
Ryanair 432 454 431 381 367 367 318 467 432 455 424 415
Vueling 117 177 330 382 348 345 100 184 365 247 180 345

Mostrarem aquesta informació en un mapa de calor amb ggplot.

# Canviem el format de les dades per elaborar el mapa de calor
library(reshape)
## Warning: package 'reshape' was built under R version 4.0.5
## 
## Attaching package: 'reshape'
## The following object is masked from 'package:dplyr':
## 
##     rename
## The following objects are masked from 'package:tidyr':
## 
##     expand, smiths
delays2 <- reshape::melt(delays)
## Using Companyia as id variables
p <- ggplot(delays2, aes(variable, Companyia, fill= value)) + 
  geom_tile()
print(p)

Ordenem alfabèticament les companyies.

# Primer fem l'ordenació
delays2$Companyia <- with(delays2,factor(Companyia,levels = rev(sort(unique(Companyia)))))

# A continuació, repetim el gràfic, ara ja ordenat
p2 <- ggplot(delays2, aes(variable, Companyia, fill= value)) + 
  geom_tile()
p2

Afegim alguns títols

p3 <- p2+xlab("Mes de l'any") +
 ylab("Companyia aèria") +
 ggtitle("Retard mensual") +
 labs(fill = "Mitjana en minuts")
p3

Pots triar altres palettes de colors:

p3+ scale_fill_distiller(palette = 'Accent')

Pots provar totes aquestes:

  • Diverging: BrBG, PiYG, PRGn, PuOr, RdBu, RdGy, RdYlBu, RdYlGn, Spectral
  • Qualitative: Accent, Dark2, Paired, Pastel1, Pastel2, Set1, Set2, Set3
  • Sequential: Blues, BuGn, BuPu, GnBu, Greens, Greys, Oranges, OrRd, PuBu, PuBuGn, PuRd, Purples, RdPu, Reds, YlGn, YlGnBu, YlOrBr, YlOrRd

O introduir colors manualment:

p3+scale_fill_gradient(low="white",high="steelblue")

2.2 Crear un mapa amb una ubicació

Ubiquem la Facultat en un mapa:

3.Recursos

Help > Cheatsheets

Publicar documents fets amb R Markdown: https://rpubs.com

R Markdown: The Definitive Guide: https://bookdown.org/yihui/rmarkdown/