Kapitel 10 Ergebnisse exportieren

Nachdem alle Berechnungen mit R durchgeführt wurden, möchte man in der Regel die erstellten Tabellen und Abbildungen in das für die wissenschaftliche Arbeit verwendete Textverarbeitungsprogramm einfügen. Die Ergebnisse einfach aus der Konsole zu kopieren und bspw. in Word einzufügen sieht allerdings schlecht aus und benötigt nachträglich einige Formatierungen. Glücklicherweise gibt es zwei Erweiterungen, mit denen man die Ergebnisse aus R direkt in PDFs oder Word-Dokumente, Internetseiten oder LaTeX Code umwandeln kann. Auf diese Weise können nicht nur einzelne Tabellen, sondern ganze Paper oder Bücher erstellt werden.

10.1 Wichtige Begriffe

Während der Datenanalyse werden alle Auswertungen zunächst nur innerhalb von RStudio angezeigt. Die Ergebnisse aus R in ein anderes Format zu bringen, hat vor allem zwei Vorteile:

  1. Die Auswertungen können auch mit KollegInnen und BetreuerInnen besprochen werden, die kein R installiert haben.
  2. Tabellen und Abbildungen müssen nicht erst in Word oder einem anderen Programm manuell erstellt werden.

Bevor wir uns in den folgenden Kapiteln anschauen, wie das genau funktioniert, müssen wir zunächst einige Begrifflichkeiten klären. In R existiert eine Erweiterung namens R Markdown, welche die Ergebnisse aus R in Word, PDF oder Internetseiten umwandeln kann.

HTML. Das sogenannte Hypertext Markup Language (HTML) Format ist das strukturelle Rückrad des Internets. Es gibt die Form von Internetseiten vor, die von Browsern wie Firefox, Chrome oder Brave dargestellt wird. Aber auch ohne Internet können HTML Dateien im Browser geöffnet werden. Dadurch ist es sehr praktisch zum gegenseitigen Teilen von Inhalten, da jeder und jede einen Browser auf dem Computer installiert hat.

Markdown. Um das Erstellen von Inhalten in HTML Dokumenten einfacher zu gestalten, wurde Markdown erfunden. Es bietet eine deutlich einfachere Syntax zum Bearbeiten eines Textes und wird heute von vielen Programmen verwendet (z.B. Notion oder Obsidian).

YAML. Damit nicht nur das Schreiben von Texten sondern auch die Konfigurationen leichter werden, gibt es YAML (Akronym für yet another markup language). Dabei werden verschiedene Optionen durch Einrücken voneinander abgegrenzt und sind so für das menschliche Auge gut lesbar.

R Markdown. Die Funktionen von Markdown werden von R Markdown erweitert, um diese nicht nur für HTML Dateien sondern auch für Word- und PDF-Dokumente anzuwenden. So ist es möglich, eine R Markdown Datei zu verwenden, die mit derselben Basis in Word, PDF und HTML umgewandelt werden kann. Das rmarkdown Package ist dabei direkt in RStudio integriert. Es handelt sich bei R Markdown nicht um ein R Skript, sondern um einen eigenes Dateiformat, welches mit .Rmd und nicht mit .R endet.

Quarto. Eine neuere Alternative zu R Markdown ist Quarto. Auch hier handelt es sich um ein eigenes Dateiformat, welches mit .qmd endet. Die Anwendung der beiden Formate ist grundsätzlich sehr ähnlich. Unterschiede und mögliche Vorteile werden in der folgenden Info-Box diskutiert.

Pandoc. Die Umwandlung der Dateien findet hinter den Kulissen mithilfe von Pandoc statt. Da Pandoc seit der RStudio Version 1.3 vorinstalliert ist, muss du dir darum keine Gedanken mehr machen. Wer eine ältere Version auf dem Computer hat, muss Pandoc manuell unter https://pandoc.org/installing.html herunterladen. Für das Umwandeln von R Markdown Dateien in Word durch Pandoc ist außerdem eine Installation von Microsoft Office oder LibreOffice auf dem Computer notwendig.

LaTeX. Das zuvor beschriebene Pandoc formiert die Datei in LaTeX um, welches wiederum für das Kreieren des PDFs verantwortlich ist. LaTeX wird in abgeänderter Form bereits seit Ende der 70er Jahre vor allem von NaturwissenschaftlerInnen für die Erstellung wissenschaftlicher Arbeiten verwendet wird. Es ist notwendig, dieses Programm auf dem Computer installiert zu haben, wenn man seine Analyse in ein PDF umwandeln möchte. Für R Nutzer ist die einfachste Installation über das tinytex Package. Dafür muss zuerst das Package installiert werden. Anschließend erfolgt mit install_tinytex() die Installation von LaTeX.

install.packages("tinytex")
tinytex::install_tinytex()

Alternativ kann auf Windows MiKTeX, auf macOS MacTeX und auf Linux LiveTeX installiert werden. Dies erfolgt unabhängig von R durch Befolgen der jeweiligen Installationsanweisungen auf der entsprechenden Internetseite.

Das Unternehmen Posit (EntwicklerInnen von RStudio) hat eine Alternative zu R Markdown namens Quarto entwickelt. Der Aufbau von R Markdown und Quarto Dateien ist dabei sehr ähnlich, weswegen es kaum einen Unterschied macht, für welches Programm man sich zunächst entscheidet. R Markdown existiert deutlich länger, weswegen es diverse Erweiterungen und Dokumentation dafür gibt. Einige dieser Erweiterungen sind ohne Zusatzpakete direkt in Quarto integriert. Tendenziell sehen die Umwandlungen mit Quarto etwas moderner aus. Außerdem kann Quarto besser mit anderen Programmiersprachen wie Python oder Julia verwendet werden. Für welches dieser Formate man sich letzten Endes entscheidet, hängt von der persönlichen Präferenz und dem eigenen Anwendungsgebiet ab.

10.2 Berichte erstellen

Für dieses Kapitel muss das knitr Package installiert und geladen werden.

library(knitr)

Öffne zum Erstellen von R Markdown Dokumenten (Endung .Rmd) das Dropdown-Menü mit dem Papier und dem grünen Pluszeichen unter dem Reiter File.

Erster Schritt in der Erstellung eines neuen R Markdown Skripts.

Abbildung 10.1: Erster Schritt in der Erstellung eines neuen R Markdown Skripts.

Wähle in diesem Reiter R Markdown aus. Die Punkte implizieren, dass noch weitere Informationen vor dem Erstellen notwendig sind. Anschließend kann man das gewünschte Ausgabeformat, den Titel und Autor festlegen. Beim Bestätigen auf OK wird eine Vorlage erstellt, die man nach Belieben anpassen kann.

Zweiter Schritt zur Erstellung eines neuen R Markdown Skripts.

Abbildung 10.2: Zweiter Schritt zur Erstellung eines neuen R Markdown Skripts.

Die wichtigsten Formatierungsmöglichkeiten in Markdown sehen wie folgt aus:

  • Fett gedruckt: **fett** ergibt fett
  • Kursiv: *kursiv* ergibt kursiv
  • Code Integration im Text: `mean(x)` ergibt mean(x)
  • Links: [Klicke hier](https://cran.r-project.org/) wird zu: Klicke hier (im gebundenen Buch sind Links nicht extra farblich hervorgehoben)
  • Überschriften können mit einer führenden Raute (# Überschrift 1) erstellt werden. Für Abschnitte innerhalb des Hauptkapitels können beliebig viele Rauten hinzugefügt werden (z.B. ## Unterkapitel 1).

Um das etwas abstrakte Konzept verständlicher zu machen, soll an dieser Stelle eine ganze R Markdown Datei namens Beispiel.Rmd abgebildet werden. Zu Beginn des Dokumentes befindet sich der YAML-Kopf, in dem verschiedene Optionen angepasst werden können (siehe Kapitel 10.1). Wir beschränken uns hier auf die Auswahl des Titels, des Autors, des Datums sowie einer optisch ansprechenden Abbildung der Tabellen (df_print: paged oder df_print: kable). Beachte im Kontext von YAML immer die richtige Einrückung der Optionen.

Nach erfolgreicher Definition der Optionen können wir grau hinterlegte Code Blöcke mithilfe von drei Backticks (```) erstellen. Diese erlauben das Ausführen von R Funktionen. Den Backticks folgen geschweifte Klammern. Die erste Information ist die verwendete Programmiersprache (hier R). Weitere Einstellungen dieses Code Blocks werden in den Zeilen darunter mit einer Hashpipe (#|) festgelegt (z.B. #| label: setup). Die einzelnen Optionen werden mit einem Doppelpunkt und nicht mit einem Gleichheitszeichen übergeben.

Im ersten Code Block laden wir alle Packages und Datensätze. Auch Vorberechnungen, die später nicht dargestellt werden sollen, würden an dieser Stelle ihren Platz finden. Durch die Option include: FALSE wird der Inhalt zwar ausgeführt, aber nicht angezeigt.

Eine weitere Option zum Ausblenden des Codes ist das Argument echo, welches ebenfalls auf FALSE gesetzt werden kann. So können bspw. ausschließlich die Ergebnisse in Form von Tabellen ohne zugehörigen R Code angezeigt werden.

– Beginn der Datei Beispiel.Rmd –

---
title: "Vorläufige Ergebnisse"
author: "Student A"
date: "2023-01-13"
output:
  html_document:
    df_print: paged
  pdf_document: 
    df_print: kable
  word_document: 
    df_print: kable
---
```{r}
#| label: setup
#| include: FALSE

library(tidyverse)
library(remp)
library(knitr)

options(dplyr.summarise.inform = FALSE)

data(big5_mod2)
```

## Deskriptive Statistik

Verschiedene Lagemaße wie Minimum, 1. Quartil, Mittelwert, Median, 3. Quartil, Maximum, Standardabweichung und Standardfehler.

```{r}
big5_mod2 |> 
  descriptive() 
```

## Visualisierung

Ein Streudiagramm zur anschaulichen Darstellung des Zusammenhangs zwischen **Extraversion** und **Neurotizismus**.

```{r}
#| echo: FALSE
#| fig.cap: "Streudiagramm zur Extraversion und Neurotizismus."

ggplot(big5_mod2, aes(x = Extraversion, y = Neurotizismus)) + 
  geom_point(position = "jitter")
```

– Ende der Datei Beispiel.Rmd –

Die Ausgabe nach Umwandlung in ein HTML Dokument ist in Abbildung 10.3 zu sehen.

Umwandlung von Markdown in HTML.

Abbildung 10.3: Umwandlung von Markdown in HTML.

Jedes R Markdown Dokument hat die Endung .Rmd und beginnt mit einem so genannten YAML-Kopf, der durch drei Bindestriche oben und unten vom restlichen Dokument abgegrenzt ist. Fortgeschrittenere Anpassungsmöglichkeiten sind im Buch R Markdown - The Definitive Guide von Xie, Allaire und Grolemund beschrieben.

Nützliche Optionen für die Code Abschnitte:

  • Ausschalten von Benachrichtigungen und Warnungen mit message: FALSE respektive warning: FALSE.
  • Ausblenden des zugehörigen R Codes mit echo: FALSE.
  • R Code anzeigen, aber nicht auswerten mit eval: FALSE.
  • Name des Chunks zur späteren Referenz mit label: Name.
  • Einstellen der Dimensionen einer Abbildung mit fig.height: 5 und fig.width: 10.
  • Beschriftung der Abbildung mit fig.cap: "Dies ist eine Abbildung."
  • Zentrieren der Abbildung mit fig.align: "center".

Umwandeln können wir das R Markdown Dokument durch Klicken auf das Wort Knit (engl. für stricken) in der Leiste unter dem Reiter der geöffneten Dateien oder durch die Tastenkombination Strg / Cmd + Shift + K. Wenn man nur auf das Symbol drückt, wird die Datei in das an erster Stelle im YAML Kopf festgelegten Format umgewandelt. Besser ist es jedoch, das Dropdown-Menü durch einen Klick auf den Pfeil nach unten zu öffnen und den gewünschten Dateityp auszuwählen.

Umwandlung des R Markdown Skripts in HTML, PDF oder Word.

Abbildung 10.4: Umwandlung des R Markdown Skripts in HTML, PDF oder Word.

R Markdown Dateien können nur umgewandelt werden, wenn alle notwendigen Informationen enthalten sind. Es müssen also innerhalb der Datei alle Packages und Datensätze explizit geladen werden. Dies trifft auch zu, obwohl man die Packages oder Datensätze möglicherweise bereits vorher verwendet hat. Man kann jede R Markdown Datei als isoliert von allem anderen in RStudio geöffneten betrachten.

RStudio bietet auch einen sogenannten Visual Editor zum Bearbeiten der R Markdown oder Quarto Datei an, welcher in einer Zeile unter den Dateinamen und unter dem Knit Button als Option per Mausklick ausgewählt werden kann. Dieser übersetzt die Markdown Inhalte direkt im Dokument, um einen besseren und übersichtlicheren Eindruck zu erhalten. Alternativ kannst du auch dedizierte Markdown Editoren wie Zettlr oder Obsidian verwenden, welche vor allem den Vorteil einer besseren Rechtschreibprüfung bieten.

10.3 Tabellen umwandeln

10.3.1 Exportieren nach Word und PDF

Für die Tabellen benötigen wir für beide Formate das knitr Package.

library(knitr)

Wenn keine ganzen Berichte, sondern nur Tabellen für die eigene Arbeit z.B. in Word erstellt werden sollen, vereinfacht sich die R Markdown Datei aus Kapitel 10.2. Im YAML-Kopf spezifizieren wir an dieser Stelle nur den Titel und den Ausgabetyp als Word und PDF. Alle Tabellen sollen dabei mit der kable() Funktion aus dem knitr Package erstellt werden (df_print: kable). Damit der R Code nicht angezeigt wird, muss in weiterer Folge noch die Option echo: FALSE in den entsprechenden Code Abschnitten hinzugefügt werden.

– Beginn der Datei Tabelle.Rmd –

---
title: 'Beispiel'
output:
  word_document: 
    df_print: kable
  pdf_document: 
    df_print: kable
---
```{r}
#| label: setup
#| include: FALSE

library(tidyverse)
library(knitr)
library(remp)

data(big5_mod2)
```
```{r}
#| echo: FALSE

big5_mod2 |> 
  select(Extraversion, Neurotizismus) |> 
  descriptive() 
```

– Ende der Datei Tabelle.Rmd –

Beispielhafter Output einer Tabelle von R Markdown in Word.

Abbildung 10.5: Beispielhafter Output einer Tabelle von R Markdown in Word.

Das Aussehen der Tabelle kann innerhalb von Word anschließend entsprechend angepasst werden. Allerdings solltest du die Breite einer gewöhnlichen Din A4 Seite beachten. Wenn du eine sehr große Korrelationsmatrix ausgeben möchtest, solltest du entweder eine Word Vorlage in Querformat verwenden (die Vorlage muss denselben Dateinamen wie das R Markdown Dokument haben) oder die Tabelle in Teilen abbilden lassen. Zur Umwandlung in ein Word Dokument klickt man wieder auf Knit und anschließend auf Knit to Word oder betätigt die Tastenkombination Strg / Cmd + Shift + K. Für die Umwandlung in ein PDF wählt man entsprechend Knit to PDF aus.

Mit einer Code- und Textbasis können wir mit R Markdown Tabellen in Word, PDF oder HTML erstellen. Beachte dabei, dass du zum Erstellen von PDF Dokumenten LaTeX auf deinem Computer installiert haben musst (siehe Kapitel 10.1).

10.3.2 Exportieren nach LaTeX

Für dieses Kapitel muss das xtable Package installiert und geladen sein.

library(xtable)

Es gibt auch die Möglichkeit, tibbles aus R direkt in LaTeX Code umzuwandeln, um diesen dann in die zugehörige LaTeX Datei einzufügen. In den bisherigen Kapiteln wurde LaTeX nur hinter den Kulissen von Pandoc zum Erstellen von PDFs verwendet. Falls du eine wissenschaftliche Publikation direkt in LaTeX schreibst, benötigst du allerdings den tatsächlichen LaTeX Code. Exemplarisch verwenden wir dieselben deskriptiven Lage- und Streuungsmaße wie im letzten Kapitel.

erg <- big5_mod2 |> 
  select(Extraversion, Neurotizismus) |> 
  descriptive() |> 
  select(Variable, Min, Mean, Median, Max, SE) 
# A tibble: 2 × 10
  Variable          N   Min    Q1  Mean Median    Q3   Max    SD    SE
  <chr>         <int> <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl>
1 Extraversion    200   2.3   2.8  3.08    3     3.3   4.3  0.35  0.02
2 Neurotizismus   200   1.4   2.7  3.13    3.1   3.6   4.6  0.68  0.05

Zum Erstellen des LaTeX Codes greift man auf die Funktion xtable() aus dem gleichnamigen Package zurück. Das erste Argument ist hierbei der auszugebende Datensatz. Das zweite Argument der Funktion ist digits, mit dem man pro Spalte die Anzahl der gerundeten Nachkommastellen festlegt. Dabei können wir entweder eine einzelne Zahl eingeben und somit für alle Spalten dieselbe Rundung anwenden oder für jede Spalte die Rundung einzeln als Vektor mithilfe von c() definieren. Da in der Funktion auch die Zeilennamen berücksichtigt werden, muss der Vektor immer um eins länger sein als die Anzahl der Spalten des eigentlichen Datensatzes. Die Funktion print() mit dem Argument include.rownames verhindert anschließend, dass jede Zeile des Datensatzes nummeriert ausgegeben wird.

tabelle <- xtable(erg, digits = c(0, 1, 2, 2, 2, 2, 3)) 
print(tabelle, include.rownames = FALSE) 
% latex table generated in R 4.3.2 by xtable 1.8-4 package
% Sat Feb 24 18:22:15 2024
\begin{table}[ht]
\centering
\begin{tabular}{lrrrrr}
  \hline
Variable & Min & Mean & Median & Max & SE \\ 
  \hline
Extraversion & 2.30 & 3.08 & 3.00 & 4.30 & 0.020 \\ 
  Neurotizismus & 1.40 & 3.13 & 3.10 & 4.60 & 0.050 \\ 
   \hline
\end{tabular}
\end{table}

10.4 Alternative mit Quarto

Zur Erstellung eines Quarto Dokuments innerhalb von RStudio wähle links das Dropdown-Menü mit dem Papier und dem grünen Pluszeichen unter dem Reiter File aus und klicke auf Quarto Document.... Bevor die Datei erstellt wird, können noch Titel, Autor und das Ausgabeformat ausgewählt werden. Nach Betätigen der Create Taste öffnet sich ein Beispieldokument mit dem typischen Aufbau einer Quarto Datei.

Auch hier startet die Datei mit einem YAML-Kopf zum Festlegen der Optionen des Dokuments. An dieser Stelle ergibt sich ein wichtiger Unterschied zu R Markdown Dateien. Während in R Markdown die Ausgabeformate mit output definiert wurden, heißt das Argument hier format. Auch die Bezeichnung der Optionen innerhalb der Formate ist anders. Wichtig ist bei Ausgabe als Internetseite (HTML-Dokument) die zusätzliche Verwendung des Arguments embed-resources, da ansonsten ein extra Ordner mit den zugehörigen Javascript und CSS Dateien erstellt wird, die für das Verhalten und Aussehen des HTML-Dokuments verantwortlich sind.

Wir verwenden an dieser Stelle dasselbe Beispiel wie in Kapitel 10.2. Die einzigen Unterschiede sind der abgeänderte YAML-Kopf und die Dateiendung mit .qmd anstelle von .Rmd.

– Beginn der Datei Quarto.qmd –

---
title: "Vorläufige Ergebnisse"
author: "Student A"
date: "2023-01-13"
format:
   html:
    embed-resources: true
    df-print: paged
   docx: 
    df-print: kable
   pdf:
    df-print: kable
---
```{r}
#| label: setup
#| include: FALSE

library(tidyverse)
library(remp)
library(knitr)

options(dplyr.summarise.inform = FALSE)

data(big5_mod2)
```

## Deskriptive Statistik

Verschiedene Lagemaße wie Minimum, 1. Quartil, Mittelwert, Median, 3. Quartil, Maximum, Standardabweichung und Standardfehler.

```{r}
big5_mod2 |> 
  descriptive() 
```

## Visualisierung

Ein Streudiagramm zur anschaulichen Darstellung des Zusammenhangs zwischen **Extraversion** und **Neurotizismus**.

```{r}
#| echo: FALSE
#| fig.cap: "Streudiagramm zur Extraversion und Neurotizismus."

ggplot(big5_mod2, aes(x = Extraversion, y = Neurotizismus)) + 
  geom_point(position = "jitter")
```

– Ende der Datei Quarto.qmd –

Umgewandelt wird bei Quarto Dokumenten nicht mit dem Button Knit, sondern durch Render. Du kannst alternativ auch hier die Tastenkombination Strg / Cmd + Shift + K verwenden. Das Ergebnis nach Umwandlung in ein HTML-Dokument ist in Abbildung 10.6 zu sehen. Die Ausgabe unterscheidet sich nur im Aussehen von der durch R Markdown erstellten Datei. Nach Umwandlung in ein Word- oder PDF-Dokument finden sich noch weniger optische Unterschiede. Erst bei komplexeren Anwendungsfällen wirst du mögliche Vor- oder Nachteile von Quarto gegenüber R Markdown bemerken.

Umwandlung der Quarto Datei in HTML, PDF oder Word.

Abbildung 10.6: Umwandlung der Quarto Datei in HTML, PDF oder Word.