Handling von langen Zeitreihen mit R

Das Problem

In meiner Masterarbeit bin ich auf folgendes Problem gestoßen. Meine N/A-Szenarienrechnungen ergaben über den Zeitraum 1992-2006 (5 Minuten zeitliche Auflösung) Daten mit über 1,5 Millionen Zeilen pro Variante. Bei acht Szenarien und acht Gebieten macht das 64 Datensätze, die mit jeweils ca. 1,5 Millionen Abflusswerten auf Auswertung warten. Aufgrund einiger Vorüberlegungen, wollte ich jedoch nur einen kleinen Betrachtungszeitraum dieser Datenreihen bearbeiten. Da Microsofts Excel „nur“ ca. 1 Mio. Zeilen lesen kann, musste ich meine Rohdaten zunächst ausschneiden. Geholfen hat mit dabei R, ein OpenSource-Pendant der Statistik-Software Matlab von Mathworks. Ihr könnte RStudio (eine R-Variante mit GUI) hier herunterladen.


Die Lösung

Um die Daten mit R ausschneiden zu können, ist zunächst der Zeilenbereich interessant, der den entsprechenden Zeitraum abdeckt. Ich verwende bei großen ASCII-Daten (Was ist das?) gerne das Notepad++ (OpenSource). Die erforderlichen Zeilennummern bekomme ich über die Suche nach Anfangs- und Endzeitstempel (in der Datumsspalte) meines gewünschten Zeitraums. Nun geht’s weiter mit R.

# Datenimport

TGB1a TGB1b TGB1c TGB1ist
# Schreiben der einzelnen Zeiträume in csvs

tgb1_a write.csv(tgb1_a, file = "~/Documents/Modellierung/A/tgb1_a.csv", row.names = FALSE)

tgb1_b write.csv(tgb1_b, file = "~/Documents/Modellierung/B/tgb1_b.csv", row.names = FALSE)

tgb1_c write.csv(tgb1_c, file = "~/Documents/Modellierung/C/tgb1_c.csv", row.names = FALSE)

tgb1_ist write.csv(tgb1_ist, file = "~/Documents/Modellierung/A/tgb1_ist.csv", row.names = FALSE)

Zunächst werden die Eingangsdaten eingelesen und als Variable in R angelegt. Im zweiten Schritt wird die Zeilenselektion [133921:137953,] vorgenommen, die dem Betrachtungszeitraum entspricht. Am Ende steht das Schreiben der Selektion in eine neue .CSV. Der weiteren Verarbeitung mit Excel & Co. steht nun nichts mehr im Wege.

Sicher könnte man auch noch das Finden der Zeiträume und die Ausgabe der Zeilennummern in R abbilden können. Hat hier jemand einen Lösungsansatz?

Hilfreiche Informationen zu R und seinen Funktionalitäten bietet folgende Quellensammlung: http://www.r-project.org/other-docs.html

0 0 votes
Article Rating
Abonnieren
Benachrichtige mich bei
guest

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
fj
fj
11 Jahre zuvor

Hilfreich sind auch die R graph gallery zur Inspiration und StackOverflow für Fragen&Antworten.

fj
fj
11 Jahre zuvor

Apropos: Brian Romans (Clastic Detritus) postet grad auch über seinen Einstieg in R.

fj
fj
11 Jahre zuvor

Zum Thema „Ausschneiden nach Datum/Zeit“. Zunächst mußt Du Deine Datums- und Uhrzeitangaben in den richtigen Datentyp umwandeln. Vermutlich hast Du in Deinen CSV-Dateien so was stehen wie „01.02.2009 00:30:15“ in einer Spalte, die ich jetzt mal „timestamp“ nenne. Die Umwandlung machen die Funktionen strptime und as.POSIXct. So kannst Du Deinem Dataframe tgbl_a (Unterstriche sind in R übrigens sehr unüblich und können sogar Probleme machen; in R verwendet man normalerweise den Punkt) eine Spalte „t“ hinzufügen: tgbl_a$t <- as.POSIXct(strptime(tgbl_a$timestamp, format = "%d.%m.%Y %H:%M")) format mußt Du natürlich entsprechend formulieren; mit ?strptime bekommst Du die Liste aller Platzhalter. Für alles weitere verwendest… Weiterlesen »