Seite 1 von 1

Probleme bei Umwandlung von CSV in Matrix

Verfasst: Di Jun 26, 2018 8:49 pm
von F15TofJ3SUS
Hallo,

ich möchte in R eine Korrelationsmatrix aus Excel einlesen, die ich in eine CSV-Datei umgewandelt habe und diese Daten dann in eine Matrix in R umwandeln.

Ich gebe dazu ein:

y <- read.csv("Irrelevanter Dateiname",FALSE,sep = ";",dec = ",")
rho <- matrix(y,10,10,dimnames=list(firmnames,firmnames),byrow=TRUE)

Wenn ich dann rho aufrufe erhalte ich:

> rho
1 2 3 4 5 6
1 factor,10 factor,10 factor,10 factor,10 factor,10 factor,10
2 factor,10 factor,10 factor,10 factor,10 factor,10 factor,10
3 factor,10 factor,10 factor,10 factor,10 factor,10 factor,10
4 factor,10 factor,10 factor,10 factor,10 factor,10 factor,10
5 factor,10 factor,10 factor,10 factor,10 factor,10 factor,10
6 factor,10 factor,10 factor,10 factor,10 factor,10 factor,10
7 factor,10 factor,10 factor,10 factor,10 factor,10 factor,10
8 factor,10 factor,10 factor,10 factor,10 factor,10 factor,10
9 factor,10 factor,10 factor,10 factor,10 factor,10 factor,10
10 factor,10 factor,10 factor,10 factor,10 factor,10 factor,10
7 8 9 10
1 factor,10 factor,10 factor,10 factor,10
2 factor,10 factor,10 factor,10 factor,10
3 factor,10 factor,10 factor,10 factor,10
4 factor,10 factor,10 factor,10 factor,10
5 factor,10 factor,10 factor,10 factor,10
6 factor,10 factor,10 factor,10 factor,10
7 factor,10 factor,10 factor,10 factor,10
8 factor,10 factor,10 factor,10 factor,10
9 factor,10 factor,10 factor,10 factor,10
10 factor,10 factor,10 factor,10 factor,10

Eigentlich sollte das Ganze aber so aussehen:

1 2 3 4 5 6 7 8 9 10
1 1.000 0.021 0.129 0.075 0.150 0.187 0.007 0.104 0.018 0.199
2 0.021 1.000 0.069 0.040 0.080 0.101 0.004 0.056 0.010 0.107
3 0.129 0.069 1.000 0.243 0.487 0.608 0.022 0.336 0.059 0.647
4 0.075 0.040 0.243 1.000 0.282 0.353 0.013 0.195 0.034 0.375
5 0.150 0.080 0.487 0.282 1.000 0.706 0.026 0.390 0.069 0.751
6 0.187 0.101 0.608 0.353 0.706 1.000 0.032 0.488 0.086 0.939
7 0.007 0.004 0.022 0.013 0.026 0.032 1.000 0.018 0.003 0.034
8 0.104 0.056 0.336 0.195 0.390 0.488 0.018 1.000 0.047 0.519
9 0.018 0.010 0.059 0.034 0.069 0.086 0.003 0.047 1.000 0.091
10 0.199 0.107 0.647 0.375 0.751 0.939 0.034 0.519 0.091 1.000
(hierfür habe ich die CSV Datei im Editor geöffnet und über copy & paste in die Funktion eingefügt. Da ich später mit einer riesigen Korrelationsmatrix mit mehreren Millionen Werten arbeiten möchte macht dieser Weg keinen Sinn)

Weiß jemand wo mein Problem liegt?

Re: Probleme bei Umwandlung von CSV in Matrix

Verfasst: Di Jun 26, 2018 10:09 pm
von EDi
Weiß jemand wo mein Problem liegt?

Code: Alles auswählen

x <- read.table(header = TRUE, text = 'header1 header2
           "non-numeric" "non-numeric"
          "non-numeric" "non-numeric"')
matrix(x, 2, 2)

Re: Probleme bei Umwandlung von CSV in Matrix

Verfasst: Mi Jun 27, 2018 7:29 am
von student
Oder einfach read.csv2()?

Re: Probleme bei Umwandlung von CSV in Matrix

Verfasst: Mi Jun 27, 2018 9:40 am
von F15TofJ3SUS
Erst mal Danke für die schnellen Antworten!
EDi hat geschrieben: Di Jun 26, 2018 10:09 pm
Weiß jemand wo mein Problem liegt?

Code: Alles auswählen

x <- read.table(header = TRUE, text = 'header1 header2
           "non-numeric" "non-numeric"
          "non-numeric" "non-numeric"')
matrix(x, 2, 2)
Soll heißen, dass R die eingelesenen Daten als non-numeric sieht, obwohl die CSV-Datei die reinen Daten ohne Spalten- und Zeilenbeschriftungen - also nur Zahlen - enthält? Wie kann ich das beheben?
student hat geschrieben: Mi Jun 27, 2018 7:29 am Oder einfach read.csv2()?
Ändert am Output leider nichts :(

Re: Probleme bei Umwandlung von CSV in Matrix

Verfasst: Mi Jun 27, 2018 1:23 pm
von jogo
Hallo Faust,

wenn Du konkrete Hilfe möchtest, musst Du uns auch konkrete Daten liefern, also z.B. die ersten 10 Zeilen Deiner Datei.
Genau dies hatte Edi bereits angemahnt.

Gruß, Jörg

Re: Probleme bei Umwandlung von CSV in Matrix

Verfasst: Mi Jun 27, 2018 1:26 pm
von bigben
Hallo!
dass R die eingelesenen Daten als non-numeric sieht
Das kannst Du ganz einfach verifizieren oder widerlegen mit

Code: Alles auswählen

str(y)
obwohl die CSV-Datei die reinen Daten ohne Spalten- und Zeilenbeschriftungen - also nur Zahlen - enthält
Da täuscht man sich häufig. Es reicht, dass ein einziger Wert einen Punkt anstelle eines Kommas enthält oder irgendwo einer ein O statt einer 0 getippt hat oder ein "/" anstelle von "NA" geschrieben hat, und schon ist die ganze Spalte non-numeric. Da solltest Du in die Rohdaten nochmal mit dem Editor schauen, und wenn Du dann nichts findest, wird es Zeit für ein reproduzierbares Beispiel.

LG,
Bernhard

Re: Probleme bei Umwandlung von CSV in Matrix

Verfasst: Mi Jun 27, 2018 5:44 pm
von EDi
Soll heißen, dass R die eingelesenen Daten als non-numeric sieht, obwohl die CSV-Datei die reinen Daten ohne Spalten- und Zeilenbeschriftungen - also nur Zahlen - enthält?
Das soll heißen, dass ich mit diesem Beispiel genau das von dir beschrieben Verhalten reproduzieren kann.
Es kann also sein, dass dies bei der Fall ist. Genau sagen kann ich das aber nicht, da du kein reproduzierbares Beispiel deiner Frage angehängt hast.
Wie kann ich das beheben?
str(), unique(), table() sind gute Hilfen. Was genau dein "Irrelevanter Dateiname" benötigt kann ich natürlich nicht sagen.
Wenn die Daten aus Excel kommen, würde ich auch direkt das xls(x) einlesen (z.b. mit readxl).