kann ich in der Spalte "description" die Zeichenkette zählen und so in die Matrix miteinbinden? Dann hätte man das ja auch als eine Zahl oder geht sowas nicht? Z.b. wenn da im Datensatz "Hey" steht, dass dort ne 3 abgespeichert wird und für "Hallo" eine 5....
Wie man longitute mit einfügt hab ich schon selbst herausgefunden, reicht ja wirklich wenn man nur ein weiteres & Argument anfügt in der Definition....langsam läuft es
@Jan: Das mit der Zahl hat sich geklärt...hab nicht beachtet, dass die daher kommt, dass man beim 1.1.0000 anfängt zu zählen. Im Workspace ist dies im Format Double als Vektor
Es wird auch nicht mit nem , angezeigt sondern mit 7.3487e+05
Irgendwie entstand beim rüberkopieren eine normale Zahl
die Datei ist sehr schwierig zu lesen, da Komma mal Trennzeichen ist und mal nicht. Die Anführungszeichen helfen zwar, werden aber teilweise leider auch innerhalb der Strings verwendet, was dann wieder alles andere als hilfreich ist. Ich würde generell versuchen, Daten in einem halbwegs vernünftigen Format zu bekommen.
Die Datei ist eine völlig korrekte CSV-Datei, bei der Strings in " gesetzt sind und " in Strings als doppelte "" kodiert sind. Warum jedoch alle Zahlen auch als Strings gespeichert sind??
Was die Sache noch komplizierter macht, ist, dass auch Zeilenumbrüche in Strings enthalten sein dürfen:
Code:
content=['"abc","a"",45",23.4,23' 10 '23,,a']
result = {};
row = 1;
col = 1;
forcell=regexp(content,'("(?:[^"]|"")*"|[^",\n]*)(,|\n|$)','tokens') cell = cell{1};
result{row,col}=cell{1};
ifcell{2}==','
col = col + 1;
else
col = 1;
row = row + 1;
end end
result
Hallo Leute,
ich arbeite mit Nemo2002 in einer Gruppe und habe eine Frage zur Umwandlung bzw. zur richtigen Arbeit mit verschiedenen Datentypen.
Hauptteil unserer Gruppenarbeit, wie Nemo2002 erklärt hat, ist die eigentliche Datenanalyse, z.B. Clusterung und statistische/ ökonometrische Auswertung. Wir sind VWLer und uns fehlt eindeutig das nötige Vorwissen in Sachen Programmierung. Das ist voll frustrierend, weil wir zur eigentlichen Datenanalyse garnicht kommen - wir haben immer noch Probleme mit dem richtigen Einlesen und Formatieren der train.csv .
[Code und train.csv sind im Anhang, s.u. .]
Ziel ist es herauszufinden (z.B. per Regression), wie die drei Zielvariablen "num_votes" (Spalte 6), "num_comments" (Sp. 7) und "num_views" (Sp. von anderen Variablen z.B. "Source" (Sp.9) beeinflusst werden. Dabei stehen z.B. in Sp. 9 bei "Source" strings drin und insgesamt sind die als Typ "cell" in t gespeichert. Der Datentyp "cell" kann anscheinend nur in "nominal" oder "double" umgewandelt werden.
Meine Fragen sind:
(i) Wie kann ich z.B. jedem Eintrag in "Source" einen eindeutigen Zahlenwert zuweisen um somit in die eigentliche Datenanalyse überzugehen?
-"@numel" geht nicht, weil verschiedene Einträge dennoch die gleiche Anzahl an characters haben können ->keine Eindeutigkeit
-erst in "nominal" und danach in "double" umwandeln ist auch nicht eindeutig - hier haben verschiedene strings ab und an dennoch den gleichen double-wert
(ii)Wie kann ich ein cell-Array (hier in Variable t gespeichert) vernünftig in ein datasetarray umwandeln? Oder wie kann ich überhaupt mit dem Datentyp "cell" vernünftig umgehen?
->siehe code: "ds= cell2dataset..." funzt nicht, weil in t keine Variablennamen in der 1.Zeile gespeichert sind. Kann ich "readvarnames" und "readobsnames" auf !false! setzen oder soll ist cell2dataset ganz und gar ungünstig?
Ich danke euch für alle helfenden und anregenden Kommentare!
Grüße
fid = fopen('train.csv');
s = textscan(fid, '%s', 'delimiter', '', 'headerlines', 1);
s = s{1}(1:10000);
close(fid);
%% Format the data for readability and workflow for data analysis
s = cellfun(@(s) [s, ','], s, 'UniformOutput', false);
t = regexp(s, '"([^"]*)",', 'tokens');
t = vertcat(t{:});
t = cellfun(@(t) t, t); % t is of type "cell"
%% Define column vectors and whole formated data matrice
bitte keine Mehrfachposts und die Code-Umgebung verwenden.
zu i)
Zitat:
-erst in "nominal" und danach in "double" umwandeln ist auch nicht eindeutig - hier haben verschiedene strings ab und an dennoch den gleichen double-wert
Dafür bitte ein konkretes Beispiel.
zu ii)
Dann schreib doch die Variablennamen drüber - entweder aus der Datei auslesen oder händisch.
vielen Dank für deinen Tipp! ich werde bei den nächsten Posts darauf achten.
Übrigens hat dein Tipp mit den headers sofort funktioniert - Yeah! Habe jetzt n dataset.
Zu (i) hier eine kurze Erläuterung:
% ***category*** ***nr of elements in column***
% android --> 7
% city_initiated -->14
% iphone --> 6
% Map Widget -->10
% Mobile Site -->11
% NA --> 2
% New Map Widget -->14
% remote_api_created -->18
% web --> 3
So wollte ich "Source" kategorisieren, aber dann ist mir aufgefallen, dass "city_initiated" und "New Map Widget" beide 14 characters haben. Aber, da ich ja jetzt die 1000x11 cell-matrix in per "cell2dataset" in ein dataset umgewandelt habe, würde ich jetzt einfach mal probieren strings und kategorien von strings direkt miteinander zu vergleichen. Was denkst du?
dass verschiedene Mitteilungen trotzdem die gleiche Zeichenlänge haben können, ist naheliegend. Ich hatte mich auf die Bildung von nominal arrays bezogen und da sollten unterschiedliche Strings auch unterschiedliche kodiert werden. Dafür, dass das nicht der Fall ist, würde ich gerne ein Beispiel sehen.
Zitat:
würde ich jetzt einfach mal probieren strings und kategorien von strings direkt miteinander zu vergleichen
Probieren schadet nie. Mir ist allerdings nicht klar, was du da mit was vergleichen willst. Insofern kann ich da nicht viel dazu sagen.
Hallo Harald,
es hat jetzt alles geklappt. Ich kann variablen in "nominal" und "double" umwandeln und die werte sind eindeutig. Anstatt den Datensatz nur teilweise einzulesen, habe ich jetzt die gesamte 223000x11 matrix eingelesen. Ist zwar tierisch rechen- und zeitintensiv, aber einige wichtige Daten, die ich unbedingt brauche, kamen, von der Datenverteilung her, erst in den letzten 1.000 bis 10.000 einträgen.
Danke nochmal für deine Hilfe!!! Die weitere Datenanalyse mache ich jetzt mit Hilfe des dataset arrays und den operationen der dataset class. Falls ich Fragen habe, melde ich mich nochmal CU
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.