Auswertung der KURAS-Datenbank
Hauke Sonnenberg
Wednesday, November 12, 2014
Source: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.
Voraussetzungen
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.
Installation
Installieren Sie das Paket kwb.kuras.db und alle davon abhängigen Pakete:
# install.packages("remotes")
remotes::install_github("kwb-r/kwb.kuras.db")
Verwendung des Pakets
Laden Sie das Paket 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))