GNU R: Datum- und Zeitfunktionen
Einleitung
[Bearbeiten]Oft sind wir am Zeitpunkt der Datenerhebung interessiert. Typischerweise wird dann zusätzlich zu den relevanten Variablen eine oder mehrere Variable mit Datum und/oder Uhrzeit erhoben. Dies gilt ganz besonders für technische Anwendungen wie z.B. die Analyse von Messdaten oder die automatisierte Auswertung von Log-Dateien.
R
verfügt über eine Vielzahl an Funktionen um Zeitpunkte zu repräsentieren, Zeitintervalle zu berechnen oder Zeitreihen zu analysieren, die in diesem Kapitel vorgestellt werden.
Grundlegende Datumfunktionen
[Bearbeiten]Umwandeln von Character-Vektoren in Datum-Variablen
[Bearbeiten]Typischerweise liegen Datum-Variablen nach einem Daten-Import nur als character
vor:
R> datensatz$datum [1] "1. Nov 2007 12:00" [2] "3. Nov 2007 11:23" [3] "3. Nov 2007 14:12" [...] R> class(datensatz$datum) [1] "character"
Um diese Variable als Datum zu behandeln, müssen wir definieren, in welcher Form das Datum vorliegt. Hierzu bietet sich die Funktion strptime()
an. Datumbestandteile und Trennzeichen lassen sich flexibel über den Parameter format
angeben. Datumsbestandteile beginnen immer mit einem %
-Zeichen. Die Bedeutung dieser Zeichen lässt sich über ?strptime
nachlesen, für unser Beispiel funktioniert die folgende Syntax:
R> datum <- strptime(datensatz$datum,format="%d. %b %Y %R") R> datum [1] "2007-11-01 12:00:00" [2] "2007-11-03 11:23:00" [3] "2007-11-03 14:12:00" [...] R> class(datum) [1] "POSIXt" "POSIXlt"
Die Variable ist nun als Datum definiert.
Einfache Definition von Datum-Variablen
[Bearbeiten]Die Funktion ISOdate(Jahr,Monat,Tag,Stunde,Minute,Sekunde)
kann zur einfachen Definition eines Datum-Objekts verwendet werden:
tag_der_befreiung<- ISOdate(1945,05,08,23,01) tag_der_befreiung [1] "1945-05-08 23:01:00 GMT"
Aktuelles Datum: Sys.time()
[Bearbeiten]Die Funktion Sys.time()
liefert das aktuelle Datum.
jetzt <- Sys.time()
Berechnen von Zeitintervallen
[Bearbeiten]Zeitintervalle lassen sich mittels der Funktion difftime()
oder noch einfacher folgendermaßen berechnen:
jetzt - tag_der_befreiung Time difference of 22851 days intervall <- (jetzt-tag_der_befreiung) class (intervall) [1] difftime
Angenommen wir interessieren uns eigentlich für die Stunden seit der offiziellen Kapitulation der Wehrmacht. Dann können wir das Objekt intervall
vom Typ difftime
folgendermaßen umrechnen:
as.numeric(intervall,units='hours') [1] 548427
Plotten zeitabhängiger Daten
[Bearbeiten]Die Funktion plot()
verwendet eine spezielle Methode, wenn als unabhängige Variable Zeitdaten spezifiziert werden:
zeitpunkte <- sort(ISOdate(2007,1:12,1:12,0:23,0:23)) # erzeugt 24 Beispiel-Zeitpunkte und sortiert sie zeitlich werte <- 1:24 - 4*sin(1:24) # erzeugt 24 Beispielwerte plot(werte~zeitpunkte,type='l',xlab='Jahr 2007',ylab='Beispieldaten') # Plottet die Zeitreihe als Liniendiagramm
Die Skalierung und Beschriftung der x-Achse passt sich entsprechend der Zeitspanne der Daten an und wird automatisch entweder in Stunden, Tagen, Monaten oder Jahren ausgegeben.
Analyse von Zeitreihen
[Bearbeiten]Als einfachste Funktion zur Darstellung von Zeitreihen bietet R den ts Befehl an. Dieser ordnet mit der Struktur ts(Datenvektor, start=Jahreszahl, frequency=Datenpunkte pro Jahr) einer univariaten Reihe von Zahlen einen jeweiligen Zeitpunkt, beginnend mit dem Startjahr und in der genannten Frequenz pro Jahr, zu.
Inhaltsverzeichnis[Bearbeiten]
|