JSL zum Konvertieren einer Formel in ihre ErgebnisseHallo,
Ich habe den folgenden JSL-Code
dt << New Column( "I (%)", (:Mean * 100) );
Das nimmt eine Spalte (Mittelwert), multipliziert sie mit 100 und erstellt eine neue Spalte namens I(%) mit der Formel.
Ich möchte nicht die Formel, sondern nur das Ergebnis der Berechnung in der neuen Spalte. Wie kann ich das machen?
Vielen Dank.
Automatisierung und SkripterstellungVerbraucher- und MarktforschungErgebnisse teilen und kommunizierenBetreff: JSL zum Konvertieren einer Formel in ihre ErgebnisseVielen Dank.Betreff: JSL zum Konvertieren einer Formel in ihre ErgebnisseDanke! Sehr deutlich.Betreff: JSL zum Konvertieren einer Formel in ihre ErgebnisseVielen Dank, sehr nützlich.Betreff: JSL zum Konvertieren einer Formel in ihre ErgebnisseDas geht vielleicht etwas vom Thema ab und ich kann einen anderen Beitrag erstellen, um das weiter zu diskutieren ...
Auch wenn die Dokumentation das ist, was sie für Set Each Value ist (die JMP-Dokumentation ist nicht immer genau auf den Punkt gebracht ...) Meiner Meinung nach ist dies der einfachste Weg, mit solchen Fällen umzugehen. Mit „Jeden Wert festlegen“ können Sie ganz einfach komplizierte „Formeln“ verwenden, ohne sich Gedanken über das spätere Entfernen der Formeln machen zu müssen. Mit Values() werden die Berechnungen möglicherweise etwas schwieriger, siehe mein Beispiel (ich beherrsche JSL-Matrizen definitiv nicht, daher gibt es höchstwahrscheinlich eine viel einfachere Möglichkeit, das zu tun, was ich in meinem Beispiel getan habe).
Beispiel mit Formeln, jeden Wert und alle Werte festlegen:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
//With formulas
newCol = dt << New Column("Formula_simple", Numeric, Continuous, Formula(:height*:weight));
newCol << Delete Formula;
newCol = dt << New Column("Formula_ColMin", Numeric, Continuous, Formula(:height*ColMin(:weight, :sex)));
newCol << Delete Formula;
//With Set Each Value
newCol = dt << New Column("SetEach_simple", Numeric, Continuous, Set Each Value(:height*:weight));
newCol = dt << New Column("SetEach_ColMin", Numeric, Continuous, Set Each Value(:height * ColMin(:weight, :sex)));
//With Values
newCol = dt << New Column("Values_simple", Numeric, Continuous, Values((:height << get values) :*</img> (:weight<< get values)));
newCol = dt << New Column("Values_ColMin", Numeric, Continuous, Values(
Summarize(exg = By(:sex), exm = Min(:weight)); //get min values by group
m_val = J(N Rows(dt),1,1);//matrix for values
height_vec = :height << get values;
For(i = 1, i <= N Items(exg), i++, //loop to "fill" matrix for values
tempRows = Loc(:sex << get as matrix, exg[i]);
m_val[tempRows] = height_vec[tempRows] * exm[i];
);
m_val;
));Was macht Set Each Value hinter den Kulissen, weil es scheinbar einwandfrei funktioniert? Sollte die Dokumentation möglicherweise aktualisiert werden, um dieses Verhalten einzubeziehen, oder sollte eine neue Funktion dafür erstellt werden? Es könnte ziemlich viele Skripte beschädigen, wenn das Verhalten „Einzelwerte festlegen“ geändert würde.
Betreff: JSL zum Konvertieren einer Formel in ihre ErgebnisseDieses Verhalten ist der beabsichtigte Zweck der Nachricht „<< Set Each Value“, wie sie dokumentiert ist.
Betreff: JSL zum Konvertieren einer Formel in ihre ErgebnisseKühler! Ich hatte angenommen, dass jeder Wert auf den gleichen Wert gesetzt werden musste.
Betreff: JSL zum Konvertieren einer Formel in ihre ErgebnisseHee ist ein einfaches Beispiel für Set Each Value
names default to here(1);
dt=open("$SAMPLE_DATA\big class.jmp");
dt << new column("times100", numeric, continuous, set each value(:height*100));

Betreff: JSL zum Konvertieren einer Formel in ihre ErgebnisseDiese Nachricht ist in diesem Fall nicht hilfreich. Es wird verwendet, um jede Zeile in der Zielspalte auf denselben konstanten Wert zu setzen.

Betreff: JSL zum Konvertieren einer Formel in ihre ErgebnisseCool!
Betreff: JSL zum Konvertieren einer Formel in ihre ErgebnisseSie brauchen überhaupt keine Formel. Ich empfehle, bei der Skripterstellung keine Spaltenformeln zu verwenden, es sei denn, Sie möchten, dass sich die Werte nach Abschluss des Skripts dynamisch ändern. Ihr Fall könnte also folgendermaßen gelöst werden:
dt << New Column( "I (%)", Numeric, Continuous, Values( (:Mean << Get Values) * 100) );
Betreff: JSL zum Konvertieren einer Formel in ihre ErgebnisseVersuchen Sie es mit <Betreff: JSL zum Konvertieren einer Formel in ihre Ergebnisse
Das Warten (3) dient nur dazu, dass Sie es ansehen können. es ist nach <
Sie können die Formel für denselben Effekt auch mit dem Formeleditor löschen.
Betreff: JSL zum Konvertieren einer Formel in ihre ErgebnisseNamesDefaultToHere(1);
// Sample table
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Add a formula column
dt << NewColumn("BMI", Numeric, Continuous, Formula(:weight/(:height^2)));
// Make sure the formula is run
dt << runFormulas;
// Wait a little, then remove the formula
Wait(3);
Column(dt, "BMI") << deleteFormula;