Klasse der eingelesenen Daten im txt Format falsch

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

mula
Beiträge: 7
Registriert: Mi Jan 08, 2020 1:56 pm

Klasse der eingelesenen Daten im txt Format falsch

Beitrag von mula »

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?
ruedi_br
Beiträge: 159
Registriert: Do Mär 01, 2018 3:53 pm

Re: Klasse der eingelesenen Daten im txt Format falsch

Beitrag von ruedi_br »

Hängt am Import: wahrscheinlich der falsche Dezimaltrenner.
Grüße
Ruedi
fortune(111)
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Klasse der eingelesenen Daten im txt Format falsch

Beitrag von jogo »

Hallo mula,

kannst Du bitte wenigstens zeigen, wie Du die Daten einliest und wie das Ergebnis von

Code: Alles auswählen

str(DeinDataframe)
aussieht :?:
Gruß, Jörg
mula
Beiträge: 7
Registriert: Mi Jan 08, 2020 1:56 pm

Re: Klasse der eingelesenen Daten im txt Format falsch

Beitrag von mula »

Ja, ich versuchs mal.

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"
P.S.: Ich habe gerade erst angefangen mich in R einzuarbeiten und steige bei vielen Sachen noch nicht durch...
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Klasse der eingelesenen Daten im txt Format falsch

Beitrag von jogo »

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)

Code: Alles auswählen

> str("grains")
 chr "grains"
hier ist das Ergebnis klar. Bitte liefere das Ergebnis von:

Code: Alles auswählen

str(grains_txt)
P.S.: Ich habe gerade erst angefangen mich in R einzuarbeiten und steige bei vielen Sachen noch nicht durch...
ja, die Anfangshürde ist nicht klein.

Gruß, Jörg
mula
Beiträge: 7
Registriert: Mi Jan 08, 2020 1:56 pm

Re: Klasse der eingelesenen Daten im txt Format falsch

Beitrag von mula »

ah ja!

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 ...
ist ist ein ziemlich großer dataframe...
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Klasse der eingelesenen Daten im txt Format falsch

Beitrag von bigben »

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
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Klasse der eingelesenen Daten im txt Format falsch

Beitrag von jogo »

Vielleicht ist es das Ergebnis für den Dataframe nach dem Einlesen mit:

Code: Alles auswählen

grains_txt <- read.table("//Volumes/NO NAME/Kanarenprojekt/Korngrößenanalyse/Lanzarote/Lanz_I/Korngrößen_P1.txt", dec=",")
(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
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Klasse der eingelesenen Daten im txt Format falsch

Beitrag von bigben »

Hallo Jörg,

mich stört folgende Zeile:

Code: Alles auswählen

$ X0.076   : Factor w/ 2 levels "0","0,121881533": 1 1 1 1 2 1 1 1 1 1 ...
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?

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Klasse der eingelesenen Daten im txt Format falsch

Beitrag von jogo »

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:

Code: Alles auswählen

grains_txt <- read.table("//Volumes/NO NAME/Kanarenprojekt/Korngrößenanalyse/Lanzarote/Lanz_I/Korngrößen_P1.txt", dec=",")
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 ...

Code: Alles auswählen

read.table(header=TRUE, text=
"0,3 0,04
0,7 0,88
3 5")
Antworten