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:
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
:
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:
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):
Wir überprüfen das Ergebnis:
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:
Und so sieht die Indikatorentabelle nun in R aus:
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))