Eingelesene Daten aus CSV sind nicht nummerisch

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Stanger
Beiträge: 5
Registriert: Do Apr 04, 2019 12:01 pm

Eingelesene Daten aus CSV sind nicht nummerisch

Beitrag 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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Eingelesene Daten aus CSV sind nicht nummerisch

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

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Beitrag 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
Stanger
Beiträge: 5
Registriert: Do Apr 04, 2019 12:01 pm

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Beitrag 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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Stanger
Beiträge: 5
Registriert: Do Apr 04, 2019 12:01 pm

Re: Eingelesene Daten aus CSV sind nicht nummerisch

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

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Beitrag von jogo »

Und was liefert

Code: Alles auswählen

hist(a$X1)
:?:

Gruß, Jörg
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Stanger
Beiträge: 5
Registriert: Do Apr 04, 2019 12:01 pm

Re: Eingelesene Daten aus CSV sind nicht nummerisch

Beitrag 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
Antworten