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
<- readr::read_csv2("data/data_year.csv")
koog_raw koog_raw
Ui, 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:
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 ,
.
<- readr::read_delim("data/data_year.csv", delim = ",") koog_raw
💡 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.
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:
<- janitor::clean_names(koog_raw)
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 |