4.3 readr::read_delim()
Nun wollen wir lernen, einen großen Datensatz einzulesen. Dazu verwenden wir die Daten aus dem Speicherkoog. Es handelt sich um eine .csv Datei, die entweder mit der Funktion
read_csv()(liest CSV-Dateien, die ein Komma,als Spalten- und einen Punkt.als Dezimaltrennzeichen verwenden)read_csv2()(liest CSV-Dateien, die ein Semikolon;als Spalten- und das Komma,als Dezimaltrennzeichen verwenden)
eingelesen werden können. Dazu geben wir den Dateipfad relativ zu unserem Arbeitsverzeichnis an. Ich habe bspw. meine Daten zum einlesen in einem Unterordner data. Von der Datei selber wird der Pfad durch / getrennt angegeben.
# Laden der Daten mit der Funktion read_csv
koog_raw <- readr::read_csv2("data/data_year.csv")
koog_rawUi, hier ist aber etwas schief gelaufen. Wir haben die Datei erfolgreich in unserer Arbeitsumgebung laden können aber 12 observations bei nur einer Variable?! Schaut euch den Datensatz koog_raw mal genauer an, indem ihr auf das Symbol (rot umrandet) klickt:
Figure 4.4: Environment
Richtig, wir haben vergessen den Zahlenseparator richtig zu setzen. read_csv() und read_csv2 sind Spezialformen der Funktion read_delim(). Zukünftig werden wir read_delim() verwenden wenn nicht klar ist, wie die Trennzeichen in unseren Rohdaten hinterlegt sind. Bei uns ist es ein ; und kein ,.
koog_raw <- readr::read_delim("data/data_year.csv", delim = ",")💡 Wenn ihr in der Klammer von read_delim() den Tab drückt (siehe unten) dann bekommt ihr einen Vorschlag, welche Argumente in der Funktion belegt werden können.
Figure 4.5: Tab Taste
Schauen wir uns den Datensatz koog_raw etwas genauer an.
head(koog_raw, n = 10)
## # A tibble: 10 x 56
## year time st10 mp10 st20 mp20 st30 mp30 st60 mp60 st100 mp100
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2010 3300. 11.5 1.42 11.4 1.09 11.3 1.20 11.1 0.692 10.8 0.563
## 2 2011 10980. 9.40 0.942 9.35 0.695 9.34 0.582 9.06 0.471 9.21 0.405
## 3 2012 19752. 9.92 0.752 9.86 0.508 9.89 0.471 9.25 0.346 9.63 0.209
## 4 2013 28524. 9.31 0.681 9.37 0.457 9.34 0.481 8.57 0.452 9.09 0.339
## 5 2014 37284. 10.7 1.08 10.7 0.697 10.7 0.972 9.64 0.644 10.4 0.480
## 6 2015 46044. 9.77 0.646 9.83 0.221 9.82 0.223 8.97 0.128 9.83 0.112
## 7 2016 54816. 9.47 1.26 9.94 1.48 9.58 1.27 9.11 1.01 10.1 0.586
## 8 2017 63588 9.18 0.971 9.76 1.09 9.27 0.774 8.92 0.609 9.86 0.387
## 9 2018 72348. 9.11 1.41 9.76 1.62 9.22 1.62 8.95 1.60 9.96 1.10
## 10 2019 81108. 8.95 1.06 9.58 1.24 9.13 1.12 9.04 0.911 10.1 0.618
## # ... with 44 more variables: st150 <dbl>, mp150 <dbl>, eh10a <dbl>,
## # eh10b <dbl>, eh10c <dbl>, eh20a <dbl>, eh20b <dbl>, eh20c <dbl>,
## # eh30a <dbl>, eh30b <dbl>, eh30c <dbl>, eh60a <dbl>, eh60b <dbl>,
## # eh60c <dbl>, eh100a <dbl>, eh100b <dbl>, eh100c <dbl>, eh150a <dbl>,
## # eh150b <dbl>, eh150c <dbl>, wd <dbl>, ws <dbl>, at <dbl>, rh <dbl>,
## # ap <dbl>, pp <dbl>, sr <dbl>, wt <dbl>, ec <dbl>, bat <dbl>, lt <dbl>,
## # wt_2 <dbl>, oxy10 <dbl>, oxy20 <dbl>, oxy30 <dbl>, oxy60 <dbl>, ...Wir haben ja bereits gesagt, dass es praktischer ist ausschließlich die Spalten mit Kleinbuchstaben (snake_case) zu belegen. Es gibt eine einfache Funktion mit janitor::clean_names(), welche automatisch die Spalten kohärent umcodiert und individuell vergibt:
Figure 4.6: Illustration von Allison Horst
koog_raw <- janitor::clean_names(koog_raw)
head(koog_raw, n = 5)Tritt eine Variable 2x auf wie bspw. pp, so wird der zweite pp Eintrag um pp_2 ergänzt.
Wofür stehen die einzelnen Spalten also:
| Spaltenname | Beschreibung | Einheit |
|---|---|---|
| time | Zeilennummer der observation (stündliches Messinterval | |
| date | Datum + Zeitangabe der Messung | |
| st10:st150 | Bodentemperatur pro Tiefe (einfache Wiederholung) | °C |
| mp10:mp150 | Matrixpotenzial pro Tiefe (einfache Wiederholung) | log hPa |
| eh10a:eh150c | Redoxpotentzial pro Tiefe (dreifache Wiederholung) | mV |
| wd | Windrichtung | ° |
| ws | Windgeschwindigkeit | m s-1 |
| at | Lufttemperatur | °C |
| rh | Relative Luftfeuchte | % |
| ap | Luftdruck | hPa |
| pp | Niederschlag | mm h-1 |
| sr | Solarstrahlung | W m-2 |
| wt | Grundwasserflurabstand | cm u GOK |
| ec | Elektrische Leitfähigkeit | mS cm-1 |
| bat | Akkuleistung der Schaltschranks | V |
| lt | Loggertemperatur | °C |
| oxy10:oxy150 | Sauerstoffgehalt | %-Luftsättigung |