vignettes/tutorial.Rmd
tutorial.Rmd
Liebe Projektpartner,
wir haben ein R-Paket geschrieben, das die Auswertung der Kuras-Datenbank vereinfacht. Dieses Tutorial gibt eine kleine Anleitung.
Sie benötigen Zugriff auf die KURAS Datenbank. Als Projektpartner haben Sie dazu eine Anleitung erhalten. Es wird erwartet, dass Sie eine ODBC-Datenquelle mit dem Namen “KURAS” auf Ihrem Rechner eingerichtet haben.
Installieren Sie das Paket kwb.kuras.db und alle davon abhängigen Pakete:
# install.packages("remotes") remotes::install_github("kwb-r/kwb.kuras.db")
Laden Sie das Paket kwb.kuras.db:
library(kwb.kuras.db)
Das Paket wird geladen.
Das Paket enthält zu jeder Tabelle eine Zugriffsfunktion, deren Name mit “kuras_” beginnt und mit dem Tabellennamen endet. So gibt die Funktion kuras_effekt
zum Beispiel Zugriff auf die Tabelle tblEffekt in der KURAS-Datenbank.
Mit dem folgenden Aufruf lädt man alle in der Datenbank eingetragenen Effekte in die Variable effekte
:
effekte <- kuras_effekt()
Die Ausgabe zeigt, welche SQL-Abfrage im Hintergrund an die Datenbank geschickt wurde und wie viele Zeilen (records) und Spalten (fields) von der Datenbank geliefert wurden.
In R existiert die Tabelle nun in Form eines Objekts vom Typ “data.frame”. Es sieht wie folgt aus:
print(effekte)
Alle Funktionen unterstützen Aufrufparameter, mit denen sich die Datensätze filtern und sortieren lassen.
Mit dem Aufrufparameter select
lassen sich einzelne Spalten aus- und abwählen. Der folgende Aufruf zum Beispiel lädt die Effekte-Tabelle ohne die dritte Spalte (eBeschreibung):
effekte <- kuras_effekt(select = -3)
Wir überprüfen das Ergebnis:
print(effekte)
In ähnlicher Weise lassen sich alle definierten Indikatoren mit Hilfe der Funktion kuras_indikator
laden. Im folgenden werden die Spalten 1 (iID) sowie fünf bis acht gleich ausgelassen:
indikatoren <- kuras_indikator(select = -(c(1, 5:8)))
Und so sieht die Indikatorentabelle nun in R aus:
print(indikatoren)
indikatoren.x <- merge(indikatoren, effekte, by.x = "iEffektID", by.y = "eID") anlagenOderStudien <- kuras_anlageoderstudie() anlagen <- kuras_anlageoderstudie(where_aIstStudie = "= 0") studien <- kuras_anlageoderstudie(where_aIstStudie = "= -1") stopifnot(nrow(anlagen) + nrow(studien) == nrow(anlagenOderStudien)) cat(sprintf("Es gibt Angaben zu %d Anlagen und zu %d Studien.\n", nrow(anlagen), nrow(studien))) cat("Aufteilung der Anlagen auf Misch-(M)- und Trenn-(T)-System:\n") print(aggregate(anlagen$aID, by = list(EW_System=anlagen$aEntwaesserungssystem), FUN=length))