Seite 1 von 2

Eingelesene Daten aus CSV sind nicht nummerisch

Verfasst: Do Apr 04, 2019 2:06 pm
von Stanger
Hallo zusammen,

Ich versuche Daten aus einer CSV einzulesen.
Diese sind laut R jedoch nicht nummerisch.

Wenn ich einzelne Werte manuell in eine neue CSV eingebe und in R einlese sind diese nummerisch.
Kopiere ich jedoch ganze Felder in einer neue CSV wiederum nicht.

Daher kann es ja nicht an den Werten selbst liegen.

Hätte vielleicht jemand eine Idee woran das liegen könnte

Vielen Dank im Voraus

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Verfasst: Do Apr 04, 2019 2:59 pm
von bigben
Ja, meistens liegt das daran, dass die Zahlenwerte als Factor eingelesen wurden. Das kann passieren, wenn an einer Stelle ein großes "o" anstelle einer Null eingegeben wurde oder ein einziges Mal Komma und Punkt verwechselt wurden oder ein fehlender Wert als na anstelle von NA bezeichnet wurde

Wenn Du die Daten als a eingelesen hast, dann poste bitte mal das Ergebnis von

Code: Alles auswählen

str(a)
hier ins Forum.
Falls da was von "factor" steht auch

Code: Alles auswählen

levels(a)
vielleicht lesenswert: viewtopic.php?f=9&t=1278

LG,
Bernhard

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Verfasst: Do Apr 04, 2019 3:15 pm
von Athomas
Diese sind laut R jedoch nicht nummerisch.
Es wird niemanden interessieren, und es ist seit der letzten Rechtschreibreform auch zulässig - aber ich kriege Plack, wenn ich "numerisch" mit Doppel-m sehe :evil: !

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Verfasst: Do Apr 04, 2019 3:36 pm
von jogo
Hallo Stanger,

willkommen im Forum!
Stanger hat geschrieben: Do Apr 04, 2019 2:06 pm Ich versuche Daten aus einer CSV einzulesen.
Diese sind laut R jedoch nicht numerisch.
in Deiner anderen Nachricht (die, die Du selbst gelöscht hast) stand noch der Code, mit dem Du die Daten einliest.

Code: Alles auswählen

x <- read.~(...)
und die Operation, die Du anschließend ausführst, bei der R entsprechend meckert.

Code: Alles auswählen

hist(x)
Das sind wichtige Informationen, um Dir helfen zu können.
Bernhard hat die Info auch aufgeschnappt und konnte Dir eine entsprechende Antwort geben.
Bitte zukünftig beherzigen: viewtopic.php?f=20&t=11

Gruß, Jörg

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Verfasst: Mi Apr 10, 2019 12:14 pm
von Stanger
Hallo zusammen Danke für die Antworten und Hinweise.

Es handelt sich um folgenden Code:

Code: Alles auswählen

a =read.table( 'C:/a.csv', header=T,sep=";",dec=",",stringsAsFactors = FALSE)

str(a)

levels(a)

is.numeric(a)

hist(a)

Die Ausgabe von str (a) lautet:

data.frame': 260 obs. of 261 variables:
$ Ind.ID: int 1 2 3 4 5 6 7 8 9 10 ...
$ X1 : num 0 0.1462 0.5426 0.1683 -0.0208 ...
$ X2 : num NA 0 0.2114 0.0824 0.4854 ...
$ X3 : num NA NA 0 0.219 0.178 ...
$ X4 : num NA NA NA 0 0.395 ...
$ X5 : num NA NA NA NA 0 ...
$ X6 : num NA NA NA NA NA ...
$ X7 : num NA NA NA NA NA ...
$ X8 : num NA NA NA NA NA ...
$ X9 : num NA NA NA NA NA ...
$ X10 : num NA NA NA NA NA NA NA NA NA 0 ...
$ X11 : num NA NA NA NA NA NA NA NA NA NA ...
....


Die Ausgabe von levels (a) lautet: NULL
Die Ausgabe von is.numeric(a) lautet: False

Es ist mir nach wie vor noch unschlüssig weshalb a nicht numerisch sein soll.

Lg
Stanger

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Verfasst: Mi Apr 10, 2019 1:56 pm
von bigben
Hallo Stanger,

die Spalten, die Du uns hier zeigst sind in der Tat alle numerisch. a selbst ist nicht numerisch, weil a ein data.frame ist. Jede einzelne Spalte innerhalb von a ist aber numerisch und wahrscheinlich liegt der Fehler darin, dass Du ein Kommando auf die ganze Tabelle angewendet hast, das eigentlich nur auf Spalten von Tabellen anzuwenden ist.

Code: Alles auswählen

> a = data.frame(eins = 1, zwei = 2)
> typeof(a)
[1] "list"
> typeof(a$eins)
[1] "double"
> is.numeric(a)
[1] FALSE
> is.numeric(a$eins)
[1] TRUE
Welcher Befehlsaufruf hat denn zu der Behauptung geführt, dass die Daten nicht-numerisch seien und wie lautete die Fehlermeldung vollständig? Was möchtest Du mit diesen Daten rechnen?

LG,
Bernhard

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Verfasst: Mi Apr 10, 2019 5:53 pm
von Stanger
Hallo Bernhard,
zuerst einmal Danke für deine Hilfe.

Mein Ziel ist es die Daten in einem Histogramm darzustellen.

Der Befehl Hist(a) für dabei zu folgendem Error:

Code: Alles auswählen

> hist(a)
Error in hist.(a) : 'x' muss numerisch sein

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Verfasst: Mi Apr 10, 2019 8:28 pm
von jogo
Und was liefert

Code: Alles auswählen

hist(a$X1)
:?:

Gruß, Jörg

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Verfasst: Do Apr 11, 2019 8:26 am
von bigben
Stanger hat geschrieben: Mi Apr 10, 2019 5:53 pmDer Befehl Hist(a) für dabei zu folgendem Error:

Code: Alles auswählen

> hist(a)
Error in hist.(a) : 'x' muss numerisch sein
Das haben wir ja oben erklärt: a ist vom Typ Tabelle, nicht vom Typ Zahl. Du kannst Histogramme einzelner Spalten von a anfertigen, wie Jörg das gezeigt hat. Wenn wirklich alle Spalten numerisch sind, kannst Du auch alle Spalten zusammenfassen und davon ein Histogramm zeichnen:

Code: Alles auswählen

bsp <- data.frame(a=rnorm(10), b=rnorm(10), c=runif(10))
hist(unlist(bsp))
Je nachdem, was Du brauchst.

LG,
Bernhard

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Verfasst: Di Apr 23, 2019 5:32 pm
von Stanger
Hallo zusammen,

das erstellen von Histogrammen einzelner Spalten hat super funktioniert.

Vielen Dank hierfür!

Jedoch ist mir noch nicht so wirklich klar wie ich die alle Spalten der Tabelle zusammenfassen soll.
@Bernhard, weshalb verwendest du in deinem Beispiel rnorm und runif?

LG
Stanger