Klasse der eingelesenen Daten im txt Format falsch
Klasse der eingelesenen Daten im txt Format falsch
Hallo liebes Forum,
ich muss für meine Bachlorarbeit eine heatmap mit R erstellen.
Dazu wollte ich eine Tabelle mit Dezimalzahlen im txt Format in R einlesen. Soweit hat das alles geklappt.
R kann aber nicht mit meinen Daten rechnen. Mir wird angezeigt, dass meine Daten nicht numerisch sind. Wenn ich mit class() und typeof() abfrage welcher Klasse und welchem Typ meine Daten zugeordnet werde spuckt R immer "character" aus. Ich weiß nicht warum, ich habe auch schon viel gegoogelt, aber noch keine Lösung gefunden. Habt ihr vielleicht eine Idee was das Problem ist?
ich muss für meine Bachlorarbeit eine heatmap mit R erstellen.
Dazu wollte ich eine Tabelle mit Dezimalzahlen im txt Format in R einlesen. Soweit hat das alles geklappt.
R kann aber nicht mit meinen Daten rechnen. Mir wird angezeigt, dass meine Daten nicht numerisch sind. Wenn ich mit class() und typeof() abfrage welcher Klasse und welchem Typ meine Daten zugeordnet werde spuckt R immer "character" aus. Ich weiß nicht warum, ich habe auch schon viel gegoogelt, aber noch keine Lösung gefunden. Habt ihr vielleicht eine Idee was das Problem ist?
Re: Klasse der eingelesenen Daten im txt Format falsch
Hängt am Import: wahrscheinlich der falsche Dezimaltrenner.
Grüße
Ruedi
Grüße
Ruedi
fortune(111)
Re: Klasse der eingelesenen Daten im txt Format falsch
Hallo mula,
kannst Du bitte wenigstens zeigen, wie Du die Daten einliest und wie das Ergebnis vonaussieht
Gruß, Jörg
kannst Du bitte wenigstens zeigen, wie Du die Daten einliest und wie das Ergebnis von
Code: Alles auswählen
str(DeinDataframe)
Gruß, Jörg
Re: Klasse der eingelesenen Daten im txt Format falsch
Ja, ich versuchs mal.
Ich lese die Daten so ein:
P.S.: Ich habe gerade erst angefangen mich in R einzuarbeiten und steige bei vielen Sachen noch nicht durch...
Ich lese die Daten so ein:
Code: Alles auswählen
grains_txt <- read.table("//Volumes/NO NAME/Kanarenprojekt/Korngrößenanalyse/Lanzarote/Lanz_I/Korngrößen_P1.txt", dec=",",stringsAsFactors = FALSE)
Code: Alles auswählen
> str("grains")
chr "grains"
Re: Klasse der eingelesenen Daten im txt Format falsch
mula hat geschrieben: ↑Mo Jan 20, 2020 1:57 pm Ich lese die Daten so ein:Code: Alles auswählen
grains_txt <- read.table("//Volumes/NO NAME/Kanarenprojekt/Korngrößenanalyse/Lanzarote/Lanz_I/Korngrößen_P1.txt", dec=",",stringsAsFactors = FALSE)
hier ist das Ergebnis klar. Bitte liefere das Ergebnis von:Code: Alles auswählen
> str("grains") chr "grains"
Code: Alles auswählen
str(grains_txt)
ja, die Anfangshürde ist nicht klein.P.S.: Ich habe gerade erst angefangen mich in R einzuarbeiten und steige bei vielen Sachen noch nicht durch...
Gruß, Jörg
Re: Klasse der eingelesenen Daten im txt Format falsch
ah ja!
ist ist ein ziemlich großer dataframe...
Code: Alles auswählen
> str(grains_txt)
'data.frame': 24 obs. of 81 variables:
$ X : Factor w/ 24 levels "P1-1","P1-10",..: 1 12 18 19 20 21 22 23 24 2 ...
$ X0.058 : int 0 0 0 0 0 0 0 0 0 0 ...
$ X0.067 : int 0 0 0 0 0 0 0 0 0 0 ...
$ X0.076 : Factor w/ 2 levels "0","0,121881533": 1 1 1 1 2 1 1 1 1 1 ...
$ X0.087 : Factor w/ 2 levels "0","0,236177078": 1 1 1 1 2 1 1 1 1 1 ...
$ X0.1 : Factor w/ 2 levels "0","0,410149058": 1 1 1 1 2 1 1 1 1 1 ...
$ X0.115 : Factor w/ 3 levels "0","0,232177138",..: 1 1 1 1 3 1 2 1 1 1 ...
$ X0.131 : Factor w/ 10 levels "0","0,140419885",..: 1 1 1 8 10 1 9 1 1 1 ...
$ X0.15 : Factor w/ 13 levels "0","0,10241106",..: 1 1 1 11 12 1 13 1 1 2 ...
$ X0.172 : Factor w/ 15 levels "0","0,111377955",..: 1 1 1 13 14 1 15 1 3 4 ...
$ X0.197 : Factor w/ 17 levels "0","0,054957375",..: 1 1 1 15 16 2 17 1 5 6 ...
$ X0.226 : Factor w/ 21 levels "0","0,11210864",..: 1 5 1 19 20 6 21 3 9 10 ...
$ X0.259 : Factor w/ 21 levels "0","0,19418818",..: 1 5 1 20 19 6 21 3 9 8 ...
$ X0.296 : Factor w/ 21 levels "0","0,29728809",..: 1 5 1 20 19 8 21 3 9 6 ...
$ X0.339 : Factor w/ 21 levels "0","0,38437248",..: 1 6 1 19 17 18 20 3 8 5 ...
$ X0.389 : Factor w/ 22 levels "0","0,15605304",..: 1 7 2 20 19 22 13 4 8 5 ...
$ X0.445 : Factor w/ 23 levels "0","0,1200876",..: 1 10 3 20 21 23 7 4 9 6 ...
$ X0.51 : Factor w/ 24 levels "0","0,051149175",..: 1 10 17 21 22 24 2 4 5 8 ...
$ X0.584 : Factor w/ 17 levels "0","0,111419163",..: 1 1 14 10 15 17 1 1 1 1 ...
$ X0.669 : Factor w/ 16 levels "0","0,103424963",..: 1 1 13 6 14 16 1 1 1 1 ...
$ X0.766 : Factor w/ 15 levels "0","0,050958945",..: 2 1 10 4 14 15 1 1 1 1 ...
$ X0.877 : Factor w/ 14 levels "0","0,111613275",..: 3 1 1 2 13 14 1 1 1 1 ...
$ X1.005 : Factor w/ 14 levels "0","0,118404608",..: 2 1 1 3 13 14 1 1 1 1 ...
$ X1.151 : Factor w/ 15 levels "0","0,111410243",..: 2 1 1 4 14 15 1 1 1 3 ...
$ X1.318 : Factor w/ 16 levels "0","0,051458543",..: 2 1 1 5 15 16 3 1 1 4 ...
$ X1.51 : Factor w/ 16 levels "0","0,122917113",..: 1 1 1 5 15 16 3 1 1 4 ...
$ X1.729 : Factor w/ 16 levels "0","0,139974998",..: 1 1 1 5 15 16 3 1 1 4 ...
$ X1.981 : Factor w/ 16 levels "0","0,157534585",..: 1 1 1 5 14 16 4 1 1 3 ...
$ X2.269 : Factor w/ 16 levels "0","0,173087363",..: 1 1 1 5 14 16 4 1 1 3 ...
$ X2.599 : Factor w/ 16 levels "0","0,187135033",..: 1 1 1 5 14 16 4 1 1 3 ...
$ X2.976 : Factor w/ 16 levels "0","0,19666738",..: 1 1 1 5 14 16 4 1 1 3 ...
$ X3.409 : Factor w/ 16 levels "0","0,204192918",..: 1 1 1 5 14 16 4 1 1 3 ...
$ X3.905 : Factor w/ 16 levels "0","0,20870824",..: 1 1 1 5 14 16 4 1 1 3 ...
$ X4.472 : Factor w/ 16 levels "0","0,21272186",..: 1 1 1 4 14 16 5 1 1 3 ...
$ X5.122 : Factor w/ 16 levels "0","0,216233778",..: 1 1 1 4 14 16 5 1 1 3 ...
$ X5.867 : Factor w/ 16 levels "0","0,220247398",..: 1 1 1 4 15 16 5 1 1 3 ...
$ X6.72 : Factor w/ 17 levels "0","0,05227664",..: 1 1 1 6 16 17 5 1 2 4 ...
$ X7.697 : Factor w/ 17 levels "0","0,1055586",..: 1 1 1 6 16 17 5 1 2 4 ...
$ X8.816 : Factor w/ 17 levels "0","0,10706658",..: 1 1 1 6 16 17 5 1 2 4 ...
$ X10.097 : Factor w/ 18 levels "0","0,10706658",..: 1 1 1 7 17 18 6 1 2 5 ...
$ X11.565 : Factor w/ 18 levels "0","0,1055586",..: 1 1 1 7 17 18 6 1 2 5 ...
$ X13.246 : Factor w/ 17 levels "0","0,128406838",..: 1 1 1 10 15 17 5 1 1 4 ...
$ X15.172 : Factor w/ 17 levels "0","0,1359014",..: 1 1 1 12 14 17 4 1 1 5 ...
$ X17.377 : Factor w/ 17 levels "0","0,141397413",..: 1 1 1 13 14 17 4 1 1 5 ...
$ X19.904 : Factor w/ 17 levels "0","0,14248351",..: 1 1 1 14 13 17 4 1 1 5 ...
$ X22.797 : Factor w/ 17 levels "0","0,118903493",..: 1 1 1 14 13 16 4 1 1 8 ...
$ X26.111 : Factor w/ 16 levels "0","0,136401038",..: 1 1 1 13 12 15 3 1 1 7 ...
$ X29.907 : Factor w/ 16 levels "0","0,129406113",..: 1 1 1 13 12 15 3 1 1 10 ...
$ X34.255 : Factor w/ 16 levels "0","0,120412638",..: 1 1 1 13 12 15 3 1 1 10 ...
$ X39.234 : Factor w/ 16 levels "0","0,110419888",..: 1 1 1 13 11 15 3 1 1 10 ...
$ X44.938 : Factor w/ 16 levels "0","0,104424238",..: 1 1 1 12 11 16 3 1 1 8 ...
$ X51.471 : Factor w/ 15 levels "0","0,163476775",..: 1 1 1 11 8 15 2 1 1 7 ...
$ X58.953 : Factor w/ 17 levels "0","0,1039246",..: 1 3 1 11 10 17 4 1 1 8 ...
$ X67.523 : Factor w/ 20 levels "0","0,051675358",..: 5 6 4 14 12 20 8 1 1 11 ...
$ X77.34 : Factor w/ 20 levels "0","0,124909375",..: 8 11 5 14 12 20 7 1 1 10 ...
$ X88.583 : Factor w/ 21 levels "0","0,148891975",..: 16 15 10 14 12 21 7 1 1 9 ...
$ X101.46 : Factor w/ 24 levels "0,11796047","0,1533113",..: 23 22 21 19 15 24 10 1 2 12 ...
$ X116.21 : Factor w/ 24 levels "0,22192563","0,26188586",..: 24 23 22 20 13 21 9 1 2 10 ...
$ X133.103 : Factor w/ 24 levels "0,429188613",..: 24 23 22 21 15 20 9 2 4 11 ...
$ X152.453 : Factor w/ 24 levels "0,696994313",..: 24 23 22 21 17 20 10 3 6 14 ...
$ X174.616 : Factor w/ 24 levels "1,1151909","1,26018079",..: 24 23 22 21 17 20 8 7 10 15 ...
$ X200 : Factor w/ 24 levels "1,720251913",..: 4 3 2 24 22 20 11 13 17 19 ...
$ X229.075 : Factor w/ 24 levels "12,82185795",..: 3 2 1 24 23 20 12 17 19 18 ...
$ X262.376 : Factor w/ 24 levels "12,77706524",..: 3 1 2 24 23 14 12 18 21 19 ...
$ X300.518 : Factor w/ 24 levels "11,06958181",..: 1 2 3 21 19 9 13 22 24 17 ...
$ X344.206 : Factor w/ 24 levels "10,55896156",..: 18 21 23 15 8 3 12 1 2 20 ...
$ X394.244 : Factor w/ 24 levels "10,10282583",..: 8 11 16 7 6 5 14 4 3 24 ...
$ X451.556 : Factor w/ 24 levels "10,93386032",..: 7 8 9 6 5 4 12 2 1 21 ...
$ X517.2 : Factor w/ 24 levels "1,649699415",..: 8 9 10 7 1 2 13 3 23 20 ...
$ X592.387 : Factor w/ 24 levels "0,88199748","1,248032025",..: 4 8 9 3 1 2 12 23 22 18 ...
$ X678.504 : Factor w/ 24 levels "0,490054793",..: 4 5 6 3 1 2 13 22 18 17 ...
$ X777.141 : Factor w/ 24 levels "0,160822935",..: 4 5 6 3 1 2 13 20 14 15 ...
$ X890.116 : Factor w/ 22 levels "0","0,338227508",..: 2 3 4 1 1 1 11 18 13 15 ...
$ X1019.515: Factor w/ 19 levels "0","0,488227075",..: 1 1 1 1 1 1 8 16 10 12 ...
$ X1167.725: Factor w/ 18 levels "0","0,35088555",..: 1 1 1 1 1 1 7 14 10 12 ...
$ X1337.481: Factor w/ 13 levels "0","0,325449163",..: 1 1 1 1 1 1 2 9 5 7 ...
$ X1531.914: Factor w/ 7 levels "0","0,323901298",..: 1 1 1 1 1 1 1 3 1 1 ...
$ X1754.613: Factor w/ 4 levels "0","0,486149723",..: 1 1 1 1 1 1 1 1 1 1 ...
$ X2009.687: Factor w/ 2 levels "0","0,332758575": 1 1 1 1 1 1 1 1 1 1 ...
$ X2301.841: int 0 0 0 0 0 0 0 0 0 0 ...
$ X2500 : int 0 0 0 0 0 0 0 0 0 0 ...
Re: Klasse der eingelesenen Daten im txt Format falsch
Ist das wirklich das Ergebnis genau des obigen read.table Aufrufs und erscheint beim read.table-Aufruf wirklich keine Fehlermeldung?
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Klasse der eingelesenen Daten im txt Format falsch
Vielleicht ist es das Ergebnis für den Dataframe nach dem Einlesen mit:
(bzw. sogar mit stringsAsFactors = TRUE)
-- sonst gäbe es nicht die Faktoren, sondern nur char
Hierzu muss mula auf alle Fälle konsistente Informationen liefern.
Aber wenn schon diese Parameterangabe nicht zuverlässig ist, ist es dann die Angabe von dec=","
Ansonsten hilft nur:
reinschauen in die Datei und nach den Teilen suchen, die selbst bei dec="," verhindern, dass die Zahlen erkannt werden.
Ich nehme in solchen Fällen einen einfachen Texteditor. (Bitte auch die letzte Zeile gründlich analysieren - nicht, dass dort irgendein Schruz noch am Ende rumhängt.)
mula, kannst Du uns die Datei Korngrößen_P1.txt als Anhang liefern? (oder sonstwie auf einem Fileserver/Cloudspeicher)
Gruß, Jörg
Code: Alles auswählen
grains_txt <- read.table("//Volumes/NO NAME/Kanarenprojekt/Korngrößenanalyse/Lanzarote/Lanz_I/Korngrößen_P1.txt", dec=",")
-- sonst gäbe es nicht die Faktoren, sondern nur char
Hierzu muss mula auf alle Fälle konsistente Informationen liefern.
Aber wenn schon diese Parameterangabe nicht zuverlässig ist, ist es dann die Angabe von dec=","
Ansonsten hilft nur:
reinschauen in die Datei und nach den Teilen suchen, die selbst bei dec="," verhindern, dass die Zahlen erkannt werden.
Ich nehme in solchen Fällen einen einfachen Texteditor. (Bitte auch die letzte Zeile gründlich analysieren - nicht, dass dort irgendein Schruz noch am Ende rumhängt.)
mula, kannst Du uns die Datei Korngrößen_P1.txt als Anhang liefern? (oder sonstwie auf einem Fileserver/Cloudspeicher)
Gruß, Jörg
Re: Klasse der eingelesenen Daten im txt Format falsch
Hallo Jörg,
mich stört folgende Zeile:
LG,
Bernhard
mich stört folgende Zeile:
Das ist eine vollständige Aufzählung aller 2 level. Wo bleibt da noch Raum für Einträge, die zu einem Factor führen?Code: Alles auswählen
$ X0.076 : Factor w/ 2 levels "0","0,121881533": 1 1 1 1 2 1 1 1 1 1 ...
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Klasse der eingelesenen Daten im txt Format falsch
Hallo Bernhard,
stimmt, guter Treffer!
(ich habe es nur bis zu der vagen Vermutung geschafft, dass auch dec="," nicht zu dem output von str(..) passt.)
Wenn wirklich so eingelesen wird:
dann sollte die Spalte $X0.076 auf alle Fälle numerisch sein.
Gruß, Jörg
p.s.: ich habe da noch einen Verdacht bezüglich der Spaltennamen ...
stimmt, guter Treffer!
(ich habe es nur bis zu der vagen Vermutung geschafft, dass auch dec="," nicht zu dem output von str(..) passt.)
Wenn wirklich so eingelesen wird:
Code: Alles auswählen
grains_txt <- read.table("//Volumes/NO NAME/Kanarenprojekt/Korngrößenanalyse/Lanzarote/Lanz_I/Korngrößen_P1.txt", dec=",")
Gruß, Jörg
p.s.: ich habe da noch einen Verdacht bezüglich der Spaltennamen ...
Code: Alles auswählen
read.table(header=TRUE, text=
"0,3 0,04
0,7 0,88
3 5")