JMP-Skriptfrage<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich bin ein neuer Benutzer, der versucht, ein JMP-Skript zu lernen. Ich habe ein sehr einfaches Skript, aber ein erwartetes Ergebnis. Vielleicht kann mir jemand einen Hinweis geben, was ich hier falsch gemacht habe. Danke im Voraus. (BTW: Ich verwende JMP 8.02)
Ich habe eine sehr einfache Tabelle (test1.csv):
| Tool_erste | Tool_second | Prozess Zeit | Werkzeug_drei | Gruppe 1 | Real_beta | Base |
| EIN | C | 03.04.2011 0:53 | E | AE | 0,0058 | Y |
| EIN | C | 03.04.2011 1:08 | E | AE | 0,0058 | Y |
| EIN | C | 03.04.2011 5:27 | E | AE | 0,0058 | Y |
| EIN | C | 03.04.2011 15:26 | E | AE | 0,0058 | Y |
| EIN | D | 03.04.2011 15:39 | E | AE | 0,0058 | Y |
| EIN | C | 03.04.2011 15:49 | E | AE | 0,0058 | Y |
| EIN | C | 03.04.2011 18:43 | E | AE | 0,0058 | Y |
| EIN | C | 03.04.2011 23:42 | E | AE | 0,0058 | Y |
| EIN | C | 04.04.2011 5:20 | E | AE | 0,0058 | Y |
| EIN | C | 4/4/2011 8:34 | E | AE | 0,0058 | Y |
| EIN | C | 04.04.2011 10:43 | E | AE | 0,0058 | Y |
| EIN | D | 4/4/2011 11:02 | E | AE | 0,0058 | Y |
| EIN | C | 04.04.2011 13:57 | E | AE | 0,0058 | Y |
| EIN | C | 04.04.2011 14:28 | E | AE | 0,0058 | Y |
| EIN | D | 04.04.2011 16:43 | E | AE | 0,0058 | Y |
| EIN | C | 04.04.2011 20:01 | E | AE | 0,0058 | Y |
| EIN | C | 04.04.2011 20:17 | E | AE | 0,0058 | Y |
| EIN | D | 04.04.2011 21:45 | E | AE | 0,0058 | Y |
| EIN | C | 05.04.2011 18:20 | E | AE | 0,0058 | Y |
| EIN | D | 05.04.2011 20:02 | E | AE | 0,0058 | Y |
| EIN | C | 05.04.2011 20:35 | E | AE | 0,0058 | Y |
Das folgende Skript liest die CSV-Datei ein und fügte der Tabelle zwei weitere Spalten hinzu, basierend auf dem Vergleich einer Zeile mit der vorherigen Zeile. Mein Skript ist unten
Source_Table = Open ("c: \ test1.csv");
Source_Table << Sortieren (Nach (Gruppe_1, Prozesszeit), Reihenfolge (Aufsteigend), Tabelle ersetzen);
neue Spalte ("Inspect_pt")
Formel(
if (Zeile () == 1,1,
(: group_1 [row ())! =: group_1 [row () - 1]), 1,
(: group_1 [row ()] ==: group_1 [row () - 1]), 0)));
neue Spalte ("tool_Change")
Formel(
if (Zeile () == 1,1,
(: tool_second [row ())! =: tool_second [row () - 1]), 1,
(: tool_second [row ()) ==: tool_second [row () - 1]), 0
)
)
);
show (aktuelle Datentabelle ());
/ * Versuch den Wert der letzten beiden Spalten auszugeben * /
for (i = 1, i ,:Werkzeugwechsel ););
Die Ergebnistabelle ist in Ordnung, aber die letzte Zeile des Skripts hat kein Ergebnis für die beiden neu erstellten Spalten zurückgegeben. Das Protokollfenster zeigte, dass der Index zu :: i wird.
Ausgabetabelle:
[Fehlendes Bild]
Das Protokollfenster zeigte jedoch, dass das Ergebnis der letzten beiden Spalten nicht korrekt gezogen wurde. Habe ich die falsche Indizierung verwendet? Protokollfensterausgabe hier:
Aktuelle Datentabelle: DataTable ("test1")
i: 1
Reihe: 1
: Inspect_pt [:: i] :. <- das ist nicht richtig
: tool_Change [:: i] :. <- das ist nicht richtig
i: 2
Reihe: 2
: Inspect_pt [:: i] :.
: tool_Change [:: i] :.
i: 3
Reihe: 3
: Inspect_pt [:: i] :.
: tool_Change [:: i] :.
i: 4
Reihe: 4
: Inspect_pt [:: i] :.
: tool_Change [:: i] :.
JMP-SkriptfrageVielen Dank an alle für die wertvollen Informationen. Dieses Forum ist großartig.
JMP-SkriptfrageDies ist besonders wichtig, wenn Sie Skripts schreiben, die Werte aus früheren Prozessen verwenden, um die weitere Vorgehensweise festzulegen (z Wählen Sie Where (: tool_change == 1) aus, um eine Teilmenge zu erstellen. Durch das Einfügen einer Zeile "Laufformeln" am Ende eines Codeblocks wie diesem weisen Sie JMP an, anzuhalten, alle anstehenden Formeln auszuwerten und dann mit dem Rest des Skripts fortzufahren.
Ich bin nicht so vertraut mit dem Verhalten von 'eval formula' (normalerweise verwende ich 'Laufformeln' - nur eine Frage der Angewohnheit). Dies ist eine Spekulation, aber abhängig von den spezifischen Prozessen könnte ich situative Unterschiede sehen, die einen Vorteil haben. ' eval formula 'over' run formulas '(dh wenn Sie sich nur für eine Formel für die Entscheidungsfindung interessieren, können Sie nur diese Formel zum Auswerten anweisen und die verbleibenden Formelauswertungen für später speichern). Der Unterschied hier hängt wirklich davon ab, wie viele Formelauswertungen Sie durchführen müssen und wann Sie sie ausführen möchten.
JMP-SkriptfrageHallo
JMP beendet einen "Befehl" nicht, bevor er zum nächsten weitergeht - er liest den Befehl "Neue Spalte" und beginnt mit der Ausführung, fährt jedoch fort, die nächsten Befehle zu lesen und auszuführen.
Was hier passiert ist, dass die 'New Column'-Befehle nicht vollständig ausgeführt werden (dieser Befehlstyp benötigt vor allem einige Zeit, da die Grafiken aktualisiert werden müssen), bevor JMP die letzte Zeile mit den' Show'-Befehlen liest, also gibt es keine Werte in den Spalten zu dem Zeitpunkt, zu dem dieser Befehl ausgeführt wird.
Entweder 'spülen' Sie die Formeln wie oben oder setzen Sie eine 'Eval-Formel' direkt in den Befehl 'Neue Spalte', z
neue Spalte ("Titel", numerisch, Formel (: X1 *: X2), Bewertungsformel);
Soweit ich verstanden habe, haben beide Ansätze dieselbe Wirkung.
BR, Marianne
PS: Ich bin kein JMP
JMP-SkriptfrageHi HY,
Ich weiß nicht genau, warum Sie diese Aussage brauchen - ich habe sie vom technischen Support von JMP erhalten. Vielleicht könnte jemand von JMP erklären?
Grüße,
Peter
JMP-SkriptfrageDanke, PMroz. Das hat den Trick gemacht. Könnten Sie bitte zu meinem eigenen Nutzen erklären, was los war und warum die zusätzliche Leitung benötigt wird, damit dies funktioniert? Danke noch einmal
JMP-SkriptfrageVersuchen Sie, den Formelpuffer von JMP mit dieser Anweisung zu "spülen":
Source_Table << Formeln ausführen;
Fügen Sie diese Zeile nach Ihren Formeldefinitionen hinzu.