R Markdown, knitr ja Pandoc - Osa 2

R Markdown, knitr ja Pandoc - Osa 2
Markus Kainu
12.2.2013
Abstract
Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor.
Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis.
Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi
lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula
lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt
sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam
nec ante. Sed lacinia, urna non tincidunt mattis, tortor neque adipiscing diam, a
cursus ipsum ante quis turpis. Nulla facilisi. Ut fringilla. Suspendisse poten
1
1
Muutokset
Osaan 1 nähden olen muuttanut muutamia asioita täyttääkseni tieteellisen
tekstiasiakirjan vaatimukset.
1. Ensinnäkin olen lisännyt alkuun otsikkolohkon (google: title-block).
2. Akateemisessa asiakirjassa tulee olla myös lähdeviitteet sekä lähdeviiteluettelo. Lähdeviiteissä käytetään bibtex-menetelmää. Lädeviitteet samassa
kansiossa tiedostossa bibtex.bib
3. Asiakirjassa tulee olla abstrakti.
Tähän lauseeseen viittaan pitkällä listalla lähteitä. (See also Gordy 2004; Stevenson and Wolfers 2011; Mishler and Rose 1997; Kramer 1999) Tähän laitain
vain yhden (p. 12, Kramer 1999)
2
Johdanto
Parahin lukija. Tämä on ensimmäinen osa hyvin lyhyestä johdannosta R Markdownin,knitr-paketin sekä pandoc*-dokumentinkääntäjän käytöstä tieteellisen
tekstiasiakirjan tuotannossa.
Tässä ensimmäisessä osassa käytämme pelkkää knitr-pakettia, emmekä lainkaan
pandoc:ia.
3
Aineiston lataaminen
R:n perusasennuksen mukana tulevien pakettien mukana tulee myös useita
pieniä datoja. Käytämme tässä niistä dataa mtcars, jossa on tietoja erilaisista
automalleista.
Ladataan ensin data ja katsotaan sen ulottuvuudet dim-komennolla.
data(mtcars)
dim(mtcars)
[1] 32 11
Aineistossa on siis 32 riviä ja 11 muuttujaa. Tutkitaan aineistoa vähän lisää.
Tulostetaan ensimmäiset 3 tapausta kustakin muuttujasta sekä str komennolla
perustiedot kustakin muuttujasta.
head(mtcars, 3)
2
##
mpg cyl disp hp drat
wt qsec vs am gear carb
## Mazda RX4
21.0
6 160 110 3.90 2.620 16.46 0 1
4
4
## Mazda RX4 Wag 21.0
6 160 110 3.90 2.875 17.02 0 1
4
4
## Datsun 710
22.8
4 108 93 3.85 2.320 18.61 1 1
4
1
str(mtcars)
## ’data.frame’:
32 obs. of 11 variables:
## $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
## $ disp: num 160 160 108 258 360 ...
## $ hp : num 110 110 93 110 175 105 245 62 95 123 ...
## $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
## $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
## $ qsec: num 16.5 17 18.6 19.4 17 ...
## $ vs : num 0 0 1 1 0 1 0 1 1 1 ...
## $ am : num 1 1 1 0 0 0 0 0 0 0 ...
## $ gear: num 4 4 4 3 3 3 3 4 4 4 ...
## $ carb: num 4 4 1 1 2 1 4 2 2 4 ...
Näin saamme vähän lisää vihiä aineistosta. Neljä ensimmistä autoa ovat kaikki
nelivaihteisia. Katsotaan kuinka monta autoista on nelivaihteisia. Ensin taulukon
avulla table-komennolla.
table(mtcars$gear)
##
## 3 4
## 15 12
5
5
Ja sitten kuvion avulla ggplot2 paketin qplot eli quickplot-funktiolla.
library(ggplot2)
qplot(mtcars$gear)
## stat_bin: binwidth defaulted to range/30. Use ’binwidth = x’ to adjust
## this.
4
Monipuolisempi kuvioita
Tehdään sitten ggplot2 avulla hieman komeampia kuvia. Tarkastellaan hevosvoimien ja kulutuksen yhteyttä. Tehdään ensin yksinkertainen hajontakuvio.
3
Kuva 1: plot of chunk unnamed-chunk-4
4
Kuva 2: plot of chunk unnamed-chunk-5
5
ggplot(data = mtcars, aes(x = hp, y = mpg)) + geom_point()
Koska kulutus on ilmoitettu muodossa miles per gallon näkyy kuviossa jo odotettu negatiivinen korrelaatio. Tehokkaammalla autolla pääsee samalla polttoainemäärällä lyhyemmän matkan.
Lisätään kuvaan informaatiota. Laitetaan värin mukaan autojen sylinterien
lukumäärä ja pallon koko auton matkamittarin lukeman mukaan.
ggplot(data = mtcars, aes(x = hp, y = mpg, color = cyl)) + geom_point(aes(size = disp))
Kuva 3: plot of chunk unnamed-chunk-6
Halutaan vielä lineaarisen regression suora mukaan sekä annetaan otsakkeet.
6
ggplot(data = mtcars, aes(x = hp, y = mpg, color = cyl)) + geom_point(aes(size = disp)) +
geom_smooth(method = lm, se = FALSE) + labs(title = "Autojen ominaisuuksia",
x = "hevosvoimia", y = "kulutus (mailia per gallona)")
Kuva 4: plot of chunk unnamed-chunk-7
Viimeiseksi muutetaam sylinteri-muuttuja faktoriksi, jotta saadaan selkeämmät
värierot grafiikkaan sekä regressiosuorat kullekkin sylinterille. Muutetaan otsakkeet ylhäälle, määritetään tulostuskoko ja annetaan taulukolle oikea nimi myös
asiakirjaan. Lisätään myös automallit oikein pienellä kirjaisimella. Lisätään myös
kimpaleasetus dev-jolla voi määrittää grafiikan muodon eri bittimappien ja
vektoriformaattien välillä.
mtcars$cyl <- factor(mtcars$cyl)
#
7
ggplot(data = mtcars, aes(x = hp, y = mpg, color = cyl, label = rownames(mtcars))) +
geom_point(aes(size = disp)) + geom_smooth(method = lm, se = FALSE) + labs(title = "Auto
x = "hevosvoimia", y = "kulutus (mailia per gallona)") + geom_text(size = 2,
vjust = -1) + theme(legend.position = "top")
5
Grafiikkaformaatit tässä yhteydessä
Oma nyrkkisääntöni dev-asetuksen suhteen on
• pdf(latex) -> ‘pdf’
• html -> vektorimuotona ‘svg’, bittimappina ‘png’
• docx/odt -> bittimappi ‘png’. Tai erilliset vektoritiedostot .eps-muodossa
painoa varten
8
Kuva 5: Monta autoa yhdessä kuvassa
9
6
Taulukot
Taulukoista on helppo sanoa että ne ovat hankalia siirtää erilaisten asiakirjaformaattien välillä. Oma nyrkkisääntöni on että
• pdf(latex) -> käytän jotain hyvää r-pakettia xtable,memisc,asprtable,stargazer
• html -> käytän pakettia xtable tai tulostan raakatekstitaulukot
• docx/odt -> tulostan raakatekstitaulukot
6.1
Raakatekstitaulukko
summary(mtcars[, 1:5])
##
##
##
##
##
##
##
6.2
mpg
Min.
:10.4
1st Qu.:15.4
Median :19.2
Mean
:20.1
3rd Qu.:22.8
Max.
:33.9
cyl
4:11
6: 7
8:14
disp
Min.
: 71.1
1st Qu.:120.8
Median :196.3
Mean
:230.7
3rd Qu.:326.0
Max.
:472.0
hp
Min.
: 52.0
1st Qu.: 96.5
Median :123.0
Mean
:146.7
3rd Qu.:180.0
Max.
:335.0
drat
Min.
:2.76
1st Qu.:3.08
Median :3.69
Mean
:3.60
3rd Qu.:3.92
Max.
:4.93
Muotoiltu taulukko xtable-paketilla
library(xtable)
tbl <- summary(mtcars[, 1:5])
xtbl <- xtable(tbl, caption = "Yhteenvetotaulukko valituista muuttujista")
print.xtable(xtbl, type = "html")
6.3
HTML-muotoilut
Näyttääkseen kivalta html-tiedosta vaatii rinnalleen css-tyylitiedoston. Tämän
demon asiakirjoissa viitataan joko article.css tai article_wide.css tiedostoihin. Viittaus on muotoa <link href="article.css"rel="stylesheet"type="text/css"title="compact"><
ja näkyy .Rmd-tiedostossa otsikon alla.
7
Lähteet
Gordy, E. 2004. “Serbia After Djindjic: War Crimes, Organized Crime, and Trust
in Public Institutions.” Problems of Post-Communism 51: 10–17.
10
Kramer, R. M. 1999. “Trust and distrust in organizations: Emerging perspectives,
enduring questions.” Annual review of psychology 50: 569–598.
Mishler, W., and R. Rose. 1997. “Trust, distrust and skepticism: popular evaluations of civil and political institutions in post-communist societies.” Journal of
Politics 59: 418–451.
Stevenson, B., and J. Wolfers. 2011. “Trust in public institutions over the business
cycle.”
11