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
Hilfreich sind auch die R graph gallery zur Inspiration und StackOverflow für Fragen&Antworten.
Apropos: Brian Romans (Clastic Detritus) postet grad auch über seinen Einstieg in R.
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 »
Hallo Florian,
besten Dank für deinen Kommentar und die umfangreiche Erklärung. Meine nächste Zeitreihenausgabe werde ich um deine Funktionen erweitern und darüber berichten. Beste Grüße nach Cottbus.