dynamische datenfiles einlese
Verfasst: Mi Okt 25, 2017 7:14 am
Hallo zusammen,
ich habe mehrere xml.Files mit Messdaten. Diese sind jetzt Tageweise abgespeichert mit 19990101.xml, 19990102.xml ... 19991231.xml.
Derzeit lese ich die Files (jeweils eines) folgendermaßen ein:
Um nicht jedes File separat einlesen zu müssen, habe ich folgendes probiert:
Jetzt ist mir nur aufgefallen, dass die doppelte Anzahl von Werten abgespeichert ist, wenn ich weiter filtere mit
dann kommt beispielsweise "19990101-13" zweimal vor - also eigentlich kommt jeder Wert zweimal vor? Ich komme nur nicht drauf, wo der Fehler liegt
In Summe hinkt der Code aber noch als ganzes. So wie ich jetzt die Filenamen (sprintf) einlese, funktioniert das ja nur bis zur ersten 10er Stelle, danach bräuchte ich eine weitere Zeile die die 1 (für die zehner) und später auch die 2 bzw. 3 (21-29, 30-31) berücksichtigt. Kann ich die Daten auch so einlesen, dass es keine chr sind? Wenn möglich, möchte ich auch ganz auf die for-Schleife verzichten, da der Code dadurch sehr träge wird.
Würde mich freuen, wenn mir von euch jemand weiterhelfen könnte.
Danke für eure Hilfe!
glg. Jessi
ich habe mehrere xml.Files mit Messdaten. Diese sind jetzt Tageweise abgespeichert mit 19990101.xml, 19990102.xml ... 19991231.xml.
Derzeit lese ich die Files (jeweils eines) folgendermaßen ein:
Code: Alles auswählen
install.packages("XML")
library("XML")
data <- xmlToDataFrame("19990101.xml")
str(data)
$ time: chr "19990101-00" "19990101-01" ...
$ station: chr "001" "002" "003" ...
$ temperature: chr "14" "12.3" "17.1" ...
$ wind: chr "1.4" "2.0" ...
$ niederschlag: chr "0.0" "0.0" "0.1" ...
$ art: chr "0" "0" "0" "1" ...
Code: Alles auswählen
Files <- sprintf("199901%i.xml",1:5)
Files
19990101.xml
19990102.xml
19990103.xml
19990104.xml
19990105.xml
data_zz <- data.frame(name=character(0), len=numeric(0))
for (i in 1:5) {data_zz <- rbind(data_zz, data.frame(xmlToDataFrame(Files[i]),nchar(i))) }
str(data_zz)
$ time: chr "19990101-00" "19990101-01" ...
$ station: chr "001" "002" "003" ...
$ temperature: chr "14" "12.3" "17.1" ...
$ wind: chr "1.4" "2.0" ...
$ niederschlag: chr "0.0" "0.0" "0.1" ...
$ art: chr "0" "0" "0" "1" ...
min(data_zz$time)
"19990101-00"
max(data_zz$time)
"19990105-23"
Jetzt ist mir nur aufgefallen, dass die doppelte Anzahl von Werten abgespeichert ist, wenn ich weiter filtere mit
Code: Alles auswählen
s001 <- subset(data_zz, data_zz$station == "001")
In Summe hinkt der Code aber noch als ganzes. So wie ich jetzt die Filenamen (sprintf) einlese, funktioniert das ja nur bis zur ersten 10er Stelle, danach bräuchte ich eine weitere Zeile die die 1 (für die zehner) und später auch die 2 bzw. 3 (21-29, 30-31) berücksichtigt. Kann ich die Daten auch so einlesen, dass es keine chr sind? Wenn möglich, möchte ich auch ganz auf die for-Schleife verzichten, da der Code dadurch sehr träge wird.
Würde mich freuen, wenn mir von euch jemand weiterhelfen könnte.
Danke für eure Hilfe!
glg. Jessi