Hallo Robert,
es ist auf jeden Fall schwierig. Ich gucke mir gerade die precip-mon.txt an. Laut der read-me im von dir verlinkten Ordner ist sie durch Leerzeichen getrennt. Das stimmt aber nicht. Libre Office Calc erkennt auch Tabulatoren in Zeile 8 und doppelte und dreifache Leerzeichen. Wenn ich in Calc ab Zeile 8 einlesen lasse sowie Tabulator, Leerzeichen und Feldtrenner zusammenfassen auswähle (siehe Anhang), wird die Datei korrekt eingelesen, allerdings unvollständig, da sie zu viele Spalten hat. Also gilt es, das gleiche in R zu reproduzieren. Ich nehme dich mal mit auf meine Spurensuche, damit du verstehst was ich - als mäßig BegabteR (höhö) - getan habe.
Dafür gibt es die Funktion read.delim(). Eigentlich müsste es mit der Standardeinstellung für den Feldtrenner klappen, wenn ich die Hilfe richtig verstehe (vorweg: Wer lesen kann, ist klar im Vorteil - siehe unten.).
the field separator character. Values on each line of the file are separated by this character. If sep = "" (the default for read.table) the separator is ‘white space’, that is one or more spaces, tabs, newlines or carriage returns.
Allerdings klappt es bei mir damit noch nicht
Code: Alles auswählen
# Datei precip-mon einlesen
precipipation <- read.delim(file = "/home/mp/Schreibtisch/R-Forum/Wetterdaten/precip-mon.txt", sep = " ", header = TRUE, skip = 7, nrows = 10)
Fehler in read.table(file = file, header = header, sep = sep, quote = quote, :
leerer Anfang der Datei
Zusätzlich: Es gab 12 Warnungen (Anzeige mit warnings())
> warnings()
Warnmeldungen:
1: In readLines(file, skip) : Zeile 1 scheint ein nul Zeichen zu enthalten
2: In readLines(file, skip) : Zeile 2 scheint ein nul Zeichen zu enthalten
3: In readLines(file, skip) : Zeile 3 scheint ein nul Zeichen zu enthalten
4: In readLines(file, skip) : Zeile 4 scheint ein nul Zeichen zu enthalten
5: In readLines(file, skip) : Zeile 5 scheint ein nul Zeichen zu enthalten
6: In readLines(file, skip) : Zeile 6 scheint ein nul Zeichen zu enthalten
7: In readLines(file, skip) : Zeile 7 scheint ein nul Zeichen zu enthalten
8: In read.table(file = file, header = header, sep = sep, ... :
line 1 appears to contain embedded nulls
9: In read.table(file = file, header = header, sep = sep, ... :
line 2 appears to contain embedded nulls
10: In read.table(file = file, header = header, sep = sep, ... :
line 3 appears to contain embedded nulls
11: In read.table(file = file, header = header, sep = sep, ... :
line 4 appears to contain embedded nulls
12: In read.table(file = file, header = header, sep = sep, ... :
line 5 appears to contain embedded nulls
Mit ein bisschen googeln bin ich hierauf gestoßen (
https://stackoverflow.com/questions/247 ... dded-nulls) - wenn ich das fileEncoding spezifiziere, tut R erst einmal was, gibt aber einen anderen Fehler aus.
Code: Alles auswählen
precipipation <- read.delim(file = "/home/mp/Schreibtisch/R-Forum/Wetterdaten/precip-mon.txt", sep = " ", header = TRUE, skip = 7, nrows = 10, fileEncoding= "UTF-16")
Fehler in read.table(file = file, header = header, sep = sep, quote = quote, :
mehr Spalten als Spaltennamen
Wenn ich behelfsmäßig die 8. Zeile mit den Spaltennamen auslasse, liest R die Datei ein. Mit str() sieht man, dass doppelte Leerzeichen nicht zusammengefasst wurden.
Code: Alles auswählen
precipipation <- read.delim(file = "/home/mp/Schreibtisch/R-Forum/Wetterdaten/precip-mon.txt", sep = " ", header = FALSE, skip = 8, nrows = 10, fileEncoding= "UTF-16")
str(precipipation)
'data.frame': 11 obs. of 54799 variables:
$ V1 : int 176512 176601 176602 176603 176604 176605 NA 176606 NA 176607 ...
$ V2 : num NA NA NA NA NA NA NA NA 0 NA ...
$ V3 : num NA NA NA NA NA NA 2.22 NA NA NA ...
$ V4 : num 25.3 17.9 25.2 27.8 18.2 ...
$ V5 : num NA NA NA NA NA NA NA NA 0 NA ...
$ V6 : logi NA NA NA NA NA NA ...
$ V7 : num 25.1 18 24.5 28.6 18.1 ...
$ V8 : num NA NA NA NA NA NA NA NA 0 NA ...
$ V9 : logi NA NA NA NA NA NA ...
$ V10 : num 25.2 18 25.5 28.6 18 ...
$ V11 : num NA NA NA NA NA NA 9.61 NA 0 NA ...
$ V12 : logi NA NA NA NA NA NA ...
$ V13 : num 25.1 18.1 25.6 29.4 17.9 ...
$ V14 : num NA NA NA NA NA NA NA NA 0 NA ...
$ V15 : logi NA NA NA NA NA NA ...
$ V16 : num 26 19.1 26.6 30.5 18 ...
$ V17 : num NA NA NA NA NA NA NA NA 0 NA ...
$ V18 : logi NA NA NA NA NA NA ...
$ V19 : num 25.9 19 26.7 30.3 18.9 ...
$ V20 : num NA NA NA NA NA NA NA NA 1.24 NA ...
$ V21 : logi NA NA NA NA NA NA ...
$ V22 : num 26 19.2 26.6 31.4 18.8 ...
$ V23 : logi NA NA NA NA NA NA ...
$ V24 : num NA NA NA NA NA NA NA NA 1.25 NA ...
$ V25 : num 25.9 19.2 27.6 31.4 18.8 ...
$ V26 : logi NA NA NA NA NA NA ...
$ V27 : logi NA NA NA NA NA NA ...
$ V28 : num 26.1 20.3 27.6 NA 18.7 ...
$ V29 : num NA NA NA 31.3 NA ...
$ V30 : logi NA NA NA NA NA NA ...
$ V31 : num 26.2 20.3 28.7 NA 18.8 ...
$ V32 : num NA NA NA 32.2 NA ...
$ V33 : num NA NA NA NA NA NA NA NA 3.85 NA ...
$ V34 : num 26.2 20.4 28.7 NA 18.9 ...
$ V35 : num NA NA NA 32.2 NA ...
$ V36 : logi NA NA NA NA NA NA ...
$ V37 : num 26.3 20.4 28.8 NA 19.7 ...
$ V38 : num NA NA NA 31.6 NA ...
$ V39 : logi NA NA NA NA NA NA ...
$ V40 : num 26.3 NA 28.7 NA 19.9 ...
$ V41 : num NA 20.3 NA 32.6 NA ...
$ V42 : logi NA NA NA NA NA NA ...
$ V43 : num 26.3 NA 29.9 NA 19.9 ...
$ V44 : num NA 21.3 NA 32.7 NA ...
$ V45 : num NA NA NA NA NA NA NA NA 1.7 NA ...
$ V46 : num 26.3 NA 30 NA 20 ...
$ V47 : num NA 21.2 NA 33.7 NA ...
$ V48 : logi NA NA NA NA NA NA ...
$ V49 : num 26.4 NA 30 NA 19.4 ...
$ V50 : num NA 21.3 NA 33.8 NA ...
$ V51 : logi NA NA NA NA NA NA ...
$ V52 : num 26.4 NA 31.2 NA 19.5 ...
$ V53 : num NA NA NA 33.7 NA ...
$ V54 : num NA 22.3 NA NA NA ...
$ V55 : num 26.5 NA 31.2 NA 19.5 ...
$ V56 : num NA NA NA 33.8 NA ...
$ V57 : num NA 22.4 NA NA NA ...
$ V58 : num 26.4 NA 30.6 NA 20.5 ...
$ V59 : num NA NA NA 33.8 NA ...
$ V60 : num NA 22.5 NA NA NA ...
$ V61 : num 25.4 NA 30.7 NA NA ...
$ V62 : num NA NA NA 33.7 19.6 ...
$ V63 : num NA 22.7 NA NA NA ...
$ V64 : num 23.8 NA 29.8 NA NA ...
$ V65 : num NA NA NA 33.7 19.7 ...
$ V66 : num NA 21.8 NA NA NA ...
$ V67 : num 24.8 NA 30.7 NA NA ...
$ V68 : num NA NA NA NA NA ...
$ V69 : num NA 23 NA 33.8 19.7 ...
$ V70 : num 23.8 NA 29.7 NA NA ...
$ V71 : num NA NA NA NA NA ...
$ V72 : num NA 23 NA 33.8 19.9 ...
$ V73 : num 23.8 NA 30.8 NA NA ...
$ V74 : num NA NA NA NA NA ...
$ V75 : num NA 23.1 NA 33.8 19.9 ...
$ V76 : num 23.8 NA 30.8 NA NA ...
$ V77 : num NA NA NA NA NA ...
$ V78 : num NA 23.2 NA 33.8 20 ...
$ V79 : num 23.9 NA 30.8 NA NA ...
$ V80 : num NA NA NA NA NA ...
$ V81 : num NA 23.3 NA 33.8 19.8 ...
$ V82 : num 21.9 NA NA NA NA ...
$ V83 : num NA NA 28.8 NA NA ...
$ V84 : num NA 22.3 NA NA 19.9 ...
$ V85 : num 21.9 NA NA 32.8 NA ...
$ V86 : num NA NA 28.8 NA NA ...
$ V87 : num NA 22.3 NA NA NA ...
$ V88 : num 22.8 NA NA NA 20 ...
$ V89 : num NA NA 29.9 31.9 NA ...
$ V90 : num NA 23.3 NA NA NA ...
$ V91 : num 22.9 NA NA NA 20 ...
$ V92 : num NA NA 30.1 32.9 NA ...
$ V93 : num NA 23.3 NA NA NA ...
$ V94 : num 20.9 NA NA NA 20 ...
$ V95 : num NA NA 27.9 32.9 NA ...
$ V96 : num NA 22.3 NA NA NA ...
$ V97 : num 20.9 NA NA NA 19 ...
$ V98 : num NA NA 28.1 32 NA ...
$ V99 : num NA 22.1 NA NA NA ...
[list output truncated]
Also funktioniert sep nicht wie oben aus der Hilfe zitiert. Wieder googeln (
https://stackoverflow.com/questions/169 ... miter-in-r):
You need to change your delimiter. " " refers to one whitespace character. "" refers to any length whitespace as being the delimiter
Und da sind wir bei dem Punkt wer lesen kann, ist klar im Vorteil. Tada (inklusive Spaltennamen):
Code: Alles auswählen
precipipation <- read.delim(file = "/home/mp/Schreibtisch/R-Forum/Wetterdaten/precip-mon.txt", sep = "", header = TRUE, skip = 7, nrows = 10, fileEncoding= "UTF-16")
str(precipipation)
'data.frame': 10 obs. of 18001 variables:
$ YYYYMM : int 176512 176601 176602 176603 176604 176605 176606 176607 176608 176609
$ X79.75N.49.75W: num 25.3 17.9 25.2 27.8 18.2 ...
$ X79.75N.49.25W: num 25.1 18 24.5 28.6 18.1 ...
$ X79.75N.48.75W: num 25.2 18 25.5 28.6 18 ...
$ X79.75N.48.25W: num 25.1 18.1 25.6 29.4 17.9 ...
$ X79.75N.47.75W: num 26 19.1 26.6 30.5 18 ...
$ X79.75N.47.25W: num 25.9 19 26.7 30.3 18.9 ...
$ X79.75N.46.75W: num 26 19.2 26.6 31.4 18.8 ...
$ X79.75N.46.25W: num 25.9 19.2 27.6 31.4 18.8 ...
$ X79.75N.45.75W: num 26.1 20.3 27.6 31.3 18.7 ...
$ X79.75N.45.25W: num 26.2 20.3 28.7 32.2 18.8 ...
$ X79.75N.44.75W: num 26.2 20.4 28.7 32.2 18.9 ...
$ X79.75N.44.25W: num 26.3 20.4 28.8 31.6 19.7 ...
$ X79.75N.43.75W: num 26.3 20.3 28.7 32.6 19.9 ...
$ X79.75N.43.25W: num 26.3 21.3 29.9 32.7 19.9 ...
$ X79.75N.42.75W: num 26.3 21.2 30 33.7 20 ...
$ X79.75N.42.25W: num 26.4 21.3 30 33.8 19.4 ...
$ X79.75N.41.75W: num 26.4 22.3 31.2 33.7 19.5 ...
$ X79.75N.41.25W: num 26.5 22.4 31.2 33.8 19.5 ...
$ X79.75N.40.75W: num 26.4 22.5 30.6 33.8 20.5 ...
$ X79.75N.40.25W: num 25.4 22.7 30.7 33.7 19.6 ...
$ X79.75N.39.75W: num 23.8 21.8 29.8 33.7 19.7 ...
$ X79.75N.39.25W: num 24.8 23 30.7 33.8 19.7 ...
$ X79.75N.38.75W: num 23.8 23 29.7 33.8 19.9 ...
$ X79.75N.38.25W: num 23.8 23.1 30.8 33.8 19.9 ...
$ X79.75N.37.75W: num 23.8 23.2 30.8 33.8 20 ...
$ X79.75N.37.25W: num 23.9 23.3 30.8 33.8 19.8 ...
$ X79.75N.36.75W: num 21.9 22.3 28.8 32.8 19.9 ...
$ X79.75N.36.25W: num 21.9 22.3 28.8 31.9 20 ...
$ X79.75N.35.75W: num 22.8 23.3 29.9 32.9 20 ...
$ X79.75N.35.25W: num 22.9 23.3 30.1 32.9 20 ...
$ X79.75N.34.75W: num 20.9 22.3 27.9 32 19 ...
$ X79.75N.34.25W: num 20.9 22.1 28.1 30.9 19 ...
$ X79.75N.33.75W: num 20.9 22.2 28.9 31.9 20.1 ...
$ X79.75N.33.25W: num 21 22.3 28.1 31.8 20.1 ...
$ X79.75N.32.75W: num 19.9 22.4 28.2 30.9 19.1 ...
$ X79.75N.32.25W: num 19.9 21.2 26.6 29.9 19 ...
$ X79.75N.31.75W: num 18.9 21.1 26.8 29.9 18.9 ...
$ X79.75N.31.25W: num 19 21 25.9 29 18.8 ...
$ X79.75N.30.75W: num 19 19.8 26 29.1 17.8 ...
$ X79.75N.30.25W: num 17.9 18.8 23.9 26.9 17.7 ...
$ X79.75N.29.75W: num 16.9 17.6 22.9 25.9 16.6 ...
$ X79.75N.29.25W: num 16.1 17.6 21.9 25.1 15.6 ...
$ X79.75N.28.75W: num 12 14.4 18.1 20.9 13.7 ...
$ X79.75N.28.25W: num 13 14.4 18.9 21.1 13.6 ...
$ X79.75N.27.75W: num 13 15.3 18.9 22.2 13.5 ...
$ X79.75N.27.25W: num 14 15.3 19 22 13.3 ...
$ X79.75N.26.75W: num 13 14.2 16.9 20 13.2 ...
$ X79.75N.26.25W: num 12 13.2 16.1 19 12.3 ...
$ X79.75N.25.75W: num 12.3 13.2 16.1 19.4 12.2 ...
$ X79.75N.25.25W: num 12.2 13.2 16.2 19.3 12 ...
$ X79.75N.24.75W: num 12.3 12.1 15.4 18.3 11.8 ...
$ X79.75N.24.25W: num 11.4 11.1 13.2 17.5 10.8 ...
$ X79.75N.23.75W: num 10.6 10.02 12.27 15.4 9.92 ...
$ X79.75N.23.25W: num 11.3 10.5 12.3 15.7 10.8 ...
$ X79.75N.22.75W: num 11.4 10.4 12.2 15.6 10.8 ...
$ X79.75N.22.25W: num 11.4 10.3 11.3 15.6 10.7 ...
$ X79.75N.21.75W: num 12.5 10.2 12.3 15.6 10.5 ...
$ X79.75N.21.25W: num 14.5 11.1 14.2 17.8 12.1 ...
$ X79.75N.20.75W: num 11.53 9.16 10.29 13.36 10.3 ...
$ X79.75N.20.25W: num 11.43 8.12 10.32 13.5 10.24 ...
$ X79.75N.19.75W: num 16.5 12.2 14.5 17.4 12.9 ...
$ X79.75N.19.25W: num 19.8 15.3 16.5 19.7 13.7 ...
$ X79.75N.18.75W: num 24.7 19.2 20.8 23.6 16.2 ...
$ X79.75N.18.25W: num 29.2 23.1 23.8 26.6 17.9 ...
$ X79.75N.17.75W: num 18.6 13 13.5 16.1 14.5 ...
$ X79.75N.17.25W: logi NA NA NA NA NA NA ...
usw......
Jetzt könnte man die leeren Spalten löschen. So ganz einfach kann man mit der Datenstruktur auch noch nicht rechnen.