--- title: "Auswertung der KURAS-Datenbank" author: "Hauke Sonnenberg" date: "Wednesday, November 12, 2014" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{tutorial} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = FALSE ) ``` 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: ```{r} # install.packages("remotes") remotes::install_github("kwb-r/kwb.kuras.db") ``` ## Verwendung des Pakets Laden Sie das Paket kwb.kuras.db: ```{r} 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`: ```{r} 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: ```{r} 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): ```{r} effekte <- kuras_effekt(select = -3) ``` Wir überprüfen das Ergebnis: ```{r} 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: ```{r} indikatoren <- kuras_indikator(select = -(c(1, 5:8))) ``` Und so sieht die Indikatorentabelle nun in R aus: ```{r} print(indikatoren) ``` ```{r} 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)) ```