Probleme bei Umwandlung von CSV in Matrix

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

Moderatoren: EDi, jogo

Antworten
F15TofJ3SUS

Probleme bei Umwandlung von CSV in Matrix

Beitrag 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?
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Probleme bei Umwandlung von CSV in Matrix

Beitrag 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)
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Probleme bei Umwandlung von CSV in Matrix

Beitrag von student »

Oder einfach read.csv2()?
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
F15TofJ3SUS

Re: Probleme bei Umwandlung von CSV in Matrix

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

Re: Probleme bei Umwandlung von CSV in Matrix

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

Re: Probleme bei Umwandlung von CSV in Matrix

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Probleme bei Umwandlung von CSV in Matrix

Beitrag 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).
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten