GNU R: Datum- und Zeitfunktionen

Aus Wikibooks

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]