Fehler bei der IF-Anweisung
Ich verwende eine IF-Anweisung wie unten gezeigt. Wenn ich das Skript ausführe, implementiert es nur den Befehl „Öffnen“ > das Skript tritt nicht einmal in die IF-Schleife ein.
Ich habe versucht, „FOR EACH ROW“ zusammen mit der IF-Anweisung zu verwenden, wie in Skript 2 gezeigt, aber es wird der folgende Fehler ausgegeben
Irgendwelche Vorschläge??
dt = Open ("C:\Users\NXF90574\Documents\NXP\Machine Learning\Script trial\fc data\fc_mcs11_evm_cluster_means.jmp");
IF( :"Ppk"n <= 2 ,
(
dt << Select where( :"Ppk"n <=2 );
dt_ppk = dt << subset (Output table("fc_mcs11_evm_cluster_means_low_ppk.jmp"), Selected Rows( 1 ), selected columns( 0 ));
dt_ppk << Save As("C:\Users\NXF90574\Documents\NXP\Machine Learning\Script trial\fc data\fc_mcs11_evm_cluster_means_low_ppk.jmp");
),
"PPk Good"
);dt = Open ("C:\Users\NXF90574\Documents\NXP\Machine Learning\Script trial\fc data\fc_mcs11_evm_cluster_means.jmp");
For each row(dt,
IF( :"Ppk"n <= 2 ,
(
dt << Select where( :"Ppk"n <=2 );
dt_ppk = dt << subset (Output table("fc_mcs11_evm_cluster_means_low_ppk.jmp"), Selected Rows( 1 ), selected columns( 0 ));
dt_ppk << Save As("C:\Users\NXF90574\Documents\NXP\Machine Learning\Script trial\fc data\fc_mcs11_evm_cluster_means_low_ppk.jmp");
),
"PPk Good"
)
); Automatisierung und SkripterstellungGrundlegende Datenanalyse und ModellierungBetreff: Fehler bei der IF-AnweisungHallo Craige,
Vielen Dank für die Erklärung. Jetzt ist es klar.
Betreff: Fehler bei der IF-AnweisungVielen Dank. Das hat gut funktioniert.
Betreff: Fehler bei der IF-AnweisungDas erste Argument der If()-Funktion,
:"Ppk"n <= 2
wird ausgewertet und vergleicht eine Spaltenreferenz oder Tabellenvariable mit einem numerischen Wert. Wollen Sie das tun?
Haben Sie eine Spalte und eine Tabellenvariable, die beide den Namen Ppk haben?
Betreff: Fehler bei der IF-AnweisungVerwenden @jthi Antwort. Aber um zu erklären, was passiert ist...
In Ihren ursprünglichen beiden Schnipseln schlägt der erste fehl, weil es keine aktuelle Zeile in der Tabelle gibt
:"Ppk"n <= 2
vergleicht mit einem fehlenden Wert; Vergleiche mit fehlenden Werten sind weder wahr noch falsch und die true- und false-Klauseln des if werden nicht ausgeführt (ein überraschendes Ergebnis, wenn Sie nichts über fehlende Werte in JMP wissen).
dt=open("$sample_data/big class.jmp");
dt:age==14
. <<< no row selected, result is missing
row()=5; dt:age==13
0 <<< LILLIE is 12
Im zweiten Beispiel macht ForEachRow jede Zeile einzeln zur aktuellen Zeile, sodass das erste Problem vermieden wird. Basierend auf Speichern in Zeile 2 nicht möglich Nachricht, ich bin mir ziemlich sicher, dass die erste Teilmengentabelle am Dateinamen hängt und die zweite Teilmenge aus Zeile 2 in derselben Datei speichern möchte, die bereits verwendet wird. (bearbeiten:) schließen(dt_ppk) Das könnte zwar behoben werden, aber es würde trotzdem immer wieder dieselbe Datei neu erstellen.
Betreff: Fehler bei der IF-AnweisungVerwenden Sie << Get Rows Where, um die Zeilen mit Ppk <= 2 abzurufen, und verwenden Sie dann if-Anweisungen, um zu überprüfen, ob Elemente in dieser Liste höher als 0 sind
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Show(Row()); // Row() is inmitialize as 0 which isn't valid row number in JMP
// -> :name; // won't return anything useful
rows_of_interest = dt << Get Rows Where(:height <= 60);
If(N Items(rows_of_interest) > 0,
// perform actions
Show("PPK NOK")
,
Print("PPK OK");
);Betreff: Fehler bei der IF-Anweisung1] Eine Datei öffnen
2 ] Es wird geprüft, ob der Spaltenname Ppk <=2 ist
a] Wenn ja, dann wählen Sie Zeilen mit Ppk <=2 aus – unterteilen Sie sie und speichern Sie sie als andere Datentabelle
b] Wenn nein, dann wird „PPk gut“ angezeigt.
Betreff: Fehler bei der IF-AnweisungWas versuchst du zu machen?