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:

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))