9 Parametrisierung eines Reports

Ein Anwendungsfall einer standardisierten Berichterstellung mit R Markdown ist die Erstellung eines Berichts für verschiedene Untereinheiten. Das bedeutet, dass ein Report mehrfach erzeugt wird, jedoch die textlichen und grafischen Darstellungen in Abhängigkeit von den Werten für die jeweilige Untereinheit im Bericht erzeugt werden.

Um dieses Ziel zu realisieren und damit ein einmal definiertes Berichtsformat auf eine (potentiell unbegrenzte) Anzahl von Untereinheiten anzuwenden, bietet R Markdown verschiedene Möglichkeiten (Xie, Allaire, and Grolemund 09.04.2021; Xie, Dervieux, and Riederer 17.08.2021).

Eine gängige Variante ist, den Bericht nicht per Klick auf den Knit-Button in RStudio zu erstellen, sondern den Befehl zum Erstellen des Dokuments per Code aufzurufen. Zur Parametrisierung kann dabei der Unterbefehl params= genutzt werden. Wichtig ist zudem, dass die Namen der zu erstellenden Dateien ebenso ein dynamisches Element enthalten – ansonsten werden die Dateien zwar erstellt, jedoch nach Abschluss eines Durchlaufs immer wieder unter derselben Bezeichnung abgespeichert. Insofern ergibt sich folgender Code zur Erstellung des Beispielberichts:

rmarkdown::render("Beispielbericht.Rmd",
                  params = list(id = id),
                  output_file = paste0(output, paste0(Sys.Date(), ' Beispielbericht Schuljahr 2019-2020 ', str_squish(id), '.docx')))

Diese Vorgabe allein ist jedoch nicht ausreichend, um eine Reihe von Berichten zu erstellen. Zusätzlich ist erforderlich, dass über eine Schleife die zur entsprechenden Untereinheit gehörigen Daten aufgerufen und verwendet werden. Dies kann folgendermaßen auf die hier verwendeten Beispieldaten angewandt werden:

for (id in unique(dkf$D19_Schulform_akt)){
#Filter für aktuelle Schulform
dkf_subset <- dkf %>% filter(D19_Schulform_akt == id)
# weiterer Code für die Auswertung folgt hier
}

Auf diese Weise werden einzelne Dokumente für die im Datenframe enthaltenen vier Schulformen erzeugt. Zu beachten ist, dass das Laden des Ursprungsdatenframes aus Effizienzgründen vor der Schleife geschehen sollte. Anschließend wird in der Schleife ein Datenframe erzeugt, welcher die gewünschte Teilmenge der Daten enthält. Die weiteren Auswertungen müssen dann innerhalb der Schleife erfolgen, wobei beachtet werden sollte, dass nicht der Objektname des ursprünglichen Datenframes innerhalb der Schleife überschrieben wird. Wäre dies der Fall, würden sich die Auswertungen nicht auf die Untereinheiten beziehen, sondern den gesamten Datenframe berücksichtigen und so konstante Ergebnisse über alle Berichte liefern.

References

Xie, Yihui, J. J. Allaire, and Garrett Grolemund. 09.04.2021. R Markdown: The Definitive Guide. Chapman & Hall/CRC the r Series. Boca Raton; London; New York: Chapman & Hall/CRC. https://bookdown.org/yihui/rmarkdown/.
Xie, Yihui, Christophe Dervieux, and Emily Riederer. 17.08.2021. R Markdown Cookbook. Chapman & Hall/CRC. https://bookdown.org/yihui/rmarkdown-cookbook/.