Ich muss Daten mit verschiedenen Formeln bearbeiten und die Ausgabe in einer letzten Spalte speichern. Ich kann die Formel erfolgreich anwenden und Daten in einer neuen Spalte speichern, jedoch nicht in derselben Spalte.
Zum Beispiel,
In dieser Tabelle

Ich verwende Formel (abs (Dividieren (Effekt, Subtrahieren (USL, Mittelwert))) * 100)) für Zellen, in denen USL-Werte vorhanden sind und
Formel (abs (Divide (Effect, Subtract (Mean, LSL))) * 100)), in der LSL-Werte vorhanden sind. Aber für Zellen, in denen der Spaltenname, LSL und USL leer sind, möchte ich die Formel verwenden: Formel (Dividieren (Effekt)), Mittelwert;
Das Skript, an dem ich gerade arbeite, lautet:
dtq = Open("path\formula.jmp");
a = dtq << New Column("Final", Formula(abs(Divide(Effect,Subtract( USL,Mean)))*100));
//);
//:Final << Formula(abs(Divide(Effect,Subtract( USL,Mean)))*100);
b = dtq << New Column("Final1",Formula(abs(Divide(Effect,Subtract( Mean,LSL)))*100));
If( Is Empty( dtq << ColumnName ),
:Final << Formula(Divide(abs(Effect)), Mean);
);
show(b);
Die Ausgabe, die ich jetzt bekomme, ist:

Ich möchte, dass die Werte von Final1 in derselben Spalte stehen. Ebenfalls,
Dieser Teil des Skripts:
If( Is Empty( dtq << ColumnName ),
:Final << Formula(Divide(abs(Effect)), Mean);
);
zeigt keinen Fehler an, funktioniert aber nicht so gut. Danke für jede Hilfe.
@ Dan_Obermiller Danke für die Lösung. Ich habe viel zu viele Tabellen, für die ich die gleiche Formel verwenden möchte. Es wäre also besser, wenn ein Skript dies tun würde. Vielen Dank für die schnelle Lösung.
Angenommen, eine Zeile wird niemals beides haben: LSL und: USL als nicht fehlend, behandelt dies alle Fälle, die Sie beschrieben haben:
If(
!Is Missing( :LSL ), Abs( :Effect / (:Mean - :LSL) ) * 100,
!Is Missing( :USL ), Abs( :Effect / (:USL - :Mean) ) * 100,
Is Missing( :ColumnName ), Abs( :Effect ) / :Mean
)
Dies erscheint mir etwas zu komplex. Alle Berechnungen können in einer einzigen Formelspalte zusammengefasst werden:
Ob(
Fehlt (: LSL) & fehlt (: USL), abs (: Effekt /: Mittelwert),
Fehlt (: LSL), Abs (: Effekt / (: USL -: Mittelwert)) * 100,
Fehlt (: USL), Abs (: Effekt / (: Mittelwert:: LSL)) * 100
)
Es muss kein Skript erstellt werden. Interaktiv sieht es so aus:

und es gibt diese Ergebnisse:
