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