R bietet uns eine Vielzahl an Werkzeugen, um mit Zeitstempel (en. timestamp) Informationen zu arbeiten. Schauen wir uns als erstes das Date
Objekt an:
Du kannst die as.Date()
Funktion nutzen, um Zeichen-Strings in ein Datums-Objekt zu konvertieren. Dieses Format erlaub es, mehr Informationen zu speicher. Der String muss dabei in einem Standard-Zeitformat vorliegen.
Um das heutige Datum zu erhalten könne wir das System (Sys.
) danach fragen:
Sys.Date()
# Als Variable festlegen
heute <- Sys.Date()
heute
Wir können außerdem Zeichen-Strings in ein Datum konvertieren, indem wir as.Date()
verwenden. Dabei können wir einerseits gleich das richtige Format angeben oder andererseits mit % Zeichen das Format selbst definieren:
Code | Wert |
%d | Tag des Monats (Dezimalzahl) |
%m | Monat (Dezimalzahl) |
%b | Monat (abgekürzt) |
%B | Monat (vollständiger Name) |
%y | Jahr (2 Stellen) |
%Y | Jahr (4 Stellen) |
Hinweis: Achtet dabei darauf, dass bspw. der abgekürzte Monat sich auf die englischen Namen bezieht!
Schauen wir uns nun einige Beispiele an, wie wir as.Date
und das passende Format einsetzen können:
# YYYY-MM-DD
as.Date('1990-11-03')
# Formatierung nutzen
as.Date("Nov-03-90",format="%b-%d-%y")
# Formatierung nutzen
as.Date("November-03-1990",format="%B-%d-%Y")
Durch die Kombination von as.Date()
und dem format
Parameter können wir im Grunde genommen jeden String konvertieren, der Datumsinformationen enthält. Das ist extrem nützlich, um Zeitreihen zu analysieren.
Genau wie mit Daten können wir auch Zeitinformationen aus Strings erhalten. R nutzt den POSIXct
Objekttyp, um Zeitinformationen zu speichern.
Es geht etwas über den Rahmen des Kurses hinaus, aber nur als kleine Info: POSIX stellt eine portable Betriebssystem-Oberfläche dar, die insbesondere für UNIX Systeme eingesetzt wird.
Was wir für diesen Kurs wissen müssen ist, dass wir as.POSIXct()
nutzen können, um einen String in ein POSIXct Objekt zu konvertieren. Die Formatregelung lesen wir am besten in der Dokumentation der strptime()
Funktion nach:
help(strptime)
as.POSIXct("11:02:03",format="%H:%M:%S")
[1] "2017-10-31 11:02:03 CET"
Achtet dabei darauf, wie das heutige Datum automatisch hinzugefügt wird, da wir es nicht selbst spezifiziert haben. Hätten wir die Information bereits, dann würden wir schreiben:
as.POSIXct("November-03-1990 11:02:03",format="%B-%d-%Y %H:%M:%S")
[1] "1990-11-03 11:02:03 CET"
Meistens werden wir tatsächlich die strptime()
Funktion anstatt POSIXct benutzen. Hier ist eine kurze Beschreibung der Unterschiede zwischen den Funktionen:
Es gibt zwei interne Implementierungen von Datum/Zeit: POSIXct, welches die Sekunden seit Beginn der UNIX Epoche speichert, und POSIXlt, welches eine Liste an Tagen, Monaten, Jahren, Stunden, Minuten und Sekunden speichert.
strptime
ist eine Funktion, um Zeichenvektoren direkt ins POSIXlt Format zu konvertieren.
as.POSIXlt
konvertiert eine Vielzahl an Datentypen zu POSIXlt. Es versucht dabei intelligent zu erkennen, welche Formatierung angebracht ist.
as.POSIXct
konvertiert eine Vielzahl an Datentypen ins POSICct Format. Es versucht ebenso intelligent zu erknnnen, welche Umwandlung angebracht ist. Im Fall von Zeichen führt es zuerst strptime aus und konvertiert anschließend von POSIXlt zu POSIXct.
Es ergibt daher Sinn, dass strptime schneller ist, da es nur Zeichen als Input verarbeitet, während die anderen Methoden zuerst zu erkennen versuchen, welche Umwandlung angebracht ist. Außerdem bietet es insofern etwas mehr Sicherheit, dass kein ungewollter Input übergeben werden kann.
Schauen wir uns daher ein einfaches Beispiel für strptime an:
strptime("11:02:03",format="%H:%M:%S")
[1] "2017-10-31 11:02:03 CET"
Toll! Für den Großtei des Kurses werden wir direkt strptime() verwenden. Sollten dich die verschiedenen Methoden dieser Lektion verwirrt haben, merke dir bitte folgendes:
Soviel zu Zeitstempeln und Daten. Wir werden uns wieder mit dem Thema befassen, wenn wir Datensätze betrachten, die Zeitinformationen beinhalten.