Word()-Funktion mit falscher AusgabeHallo alle,
Ich habe Probleme mit der Funktion word(). Ich beginne mit einer .csv-Datei
Zum Beispiel:
Spalte1, Spalte2
0,556
0,557
0,558
-1.225
-1.226
Datafile = Load Text File (...);
line_content = Words (Datafile, "\!n");
For(nn=2, nn <= N items (line_content), nn++,
Col1_list=Word(1,line_content[nn], ",");
Col2_list=Word(2,line_content[nn], ",");
);
Die resultierenden Listen sind:
{"0", "0", "0", "-12", "-12"}
{"556", "557", "558", "25", "26"}
Daher funktioniert die Funktion word() anders, wenn die Zeile mit einem Minus beginnt ... Ich habe Item() ausprobiert und eine Num(Word())-Klausel verwendet, aber es ändert nichts. Ich habe auch Word(1,Trim(line_content[nn],",")) ausprobiert.
Ich verwende JMP 14.0.0
Vielen Dank im Voraus
Betreff: Word()-Funktion mit falscher AusgabeNochmals vielen Dank für Ihre Ideen. Das sieht auch gut aus. Ich habe keine Ahnung, was sich geändert hat, aber JMP importiert die Dateien jetzt korrekt mit dem Skript von gestern, als ich die Frage ursprünglich gepostet habe (mit Ausnahme des Fehlers, den ich hier in der Post gemacht habe). Es muss eine Verwechslung von Windows/Excel-Einstellungen auf höherer Ebene zwischen "," und "." Dezimal-/Punkt-Differenzierung. Ich habe mein deutsches Windows so konfiguriert, dass es den amerikanischen Standard verwendet.Betreff: Word()-Funktion mit falscher AusgabeIch bin mir nicht ganz sicher, wonach Sie jetzt suchen, aber das kleine Skript unten liest Ihre .csv-Datei ein und gibt die 2 von Ihnen angegebenen Listen ohne Fehler zurück.Der einzige Punkt, den ich hinzugefügt habe, war sicherzustellen, dass alle Wagenrücklaufzeichen, die in der Datei vorhanden sind, nicht in den Werten der Listen enthalten sind.
names default to here(1);
Datafile = Load Text File ("...……...\WFR1_sample1.csv");
line_content = Words (Datafile, "\!n");
// Get rid of all lines upto the Graph data
// The \!r is a Carriage Return character which is at the end of each line
line_content = remove(line_content,1,loc(line_content,"{QgWave Graphs}\!r")+1);
Col1_list = {};
Col2_list = {};
For(nn=1, nn <= N items (line_content), nn++,
insert into(Col1_list,Word(1,line_content[nn], ",\!r"));
insert into(Col2_list,Word(2,line_content[nn], ",\!r"));
);Betreff: Word()-Funktion mit falscher AusgabeHier ist die Original-csv angehängt. Ich ließ meinen Kollegen über die Schulter schauen, er sah es auch... Es ist reproduzierbar.
Betreff: Word()-Funktion mit falscher AusgabeOh, Entschuldigung. Ich habe den Ausdruck verwendet:
<SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN>nn<SPAN class="token operator">=</SPAN><SPAN class="token number">2</SPAN><SPAN class="token punctuation">,</SPAN> nn <SPAN class="token operator"><=</SPAN> N items <SPAN class="token punctuation">(</SPAN>line_content<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> nn<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
Col1_list[nn-1]<SPAN class="token operator">=</SPAN><SPAN class="token function">Word</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN>line_content<SPAN class="token punctuation">[</SPAN>nn<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">","</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Col2_list[nn-1]<SPAN class="token operator">=</SPAN><SPAN class="token function">Word</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token number">2</SPAN><SPAN class="token punctuation">,</SPAN>line_content<SPAN class="token punctuation">[</SPAN>nn<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">","</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Ich werde auf die Funktion insert into () umsteigen, die viel bequemer ist. Danke.
Wenn ich die von Ihnen bereitgestellte Beispiel-.csv-Datei verwende, funktioniert der Code tatsächlich.
Aber ich habe gerade angefangen, meine geistige Gesundheit in Frage zu stellen und die .csv-Dateien mit verschiedenen Editoren geöffnet: Windows Notepad, Notepad++, Word Pad, Excel. Alle paar Durchläufe haben die angezeigten Datenspalten das Komma an einer anderen Stelle, unabhängig von den verwendeten Programmen. Ich habe das noch nie zuvor gesehen. Ich könnte einfach die Arbeit verlassen und nach Hause gehen.




Betreff: Word()-Funktion mit falscher AusgabeDeine Syntax ist mir suspekt.Ich bin mir nicht sicher, wie Sie Ihre Col1_list erstellen und Col2_list würde jemals eine verkettete Liste erstellen.Unten ist meine Modifikation, und angehängt ist die CSV-Datei, die ich verwendet habe.Es erstellt die 2 Listen ohne Fehler auf JMP 14.1
Datafile = Load Text File (".................\test.csv");
line_content = Words (Datafile, "\!n");
Col1_list = {};
Col2_list = {};
For(nn=2, nn <= N items (line_content), nn++,
insert into(Col1_list,Word(1,line_content[nn], ","));
insert into(Col2_list,Word(2,line_content[nn], ","));
);