Sammeln der kumulativen Summe aus der ausgewerteten SpalteHallo allerseits,
Ich versuche, eine Spalte zu erstellen, die die vorherige Zeile auswertet und den zscore hinzufügt und dann das Maximum zwischen dieser Bewertung und 0 nimmt. Ich habe versucht, die Lag-Formel um die Cumulative Sum-Gleichung zu verschieben, hatte aber kein Glück. Es nimmt nur den Wert von zscore an, unabhängig von der vorherigen Zeile. Jede Hilfe zur Lösung dieses Problems wäre sehr willkommen!
dt = Open("Big Class.jmp");
dt << New Column( "zscore", Formula((:weight - Col Mean( :weight, :sex )) / Col Std Dev( :weight, :sex )));
dt << Sort( By( :sex), Order( Ascending), Replace Table );
dt << New Column( "S_Hi", Formula( If( :sex == Lag( :sex ), Max( 0, :zscore + Lag( Col Cumulative Sum( :S_Hi ) ) ), Max( 0, :zscore ) ) ) )
Betreff: Sammeln der kumulativen Summe aus der ausgewerteten SpalteHallo Markus, das hat wunderbar geklappt. Danke für die Rückmeldung!
Betreff: Sammeln der kumulierten Summe aus der ausgewerteten SpalteIch denke, dass Jims Lösung auf Ihrem ursprünglichen Skript basiert, aber ich glaube nicht, dass Sie eine separate kumulative Summe verwenden möchten. Das folgende Skript ist nicht korrekt, weil ich immer noch nicht ganz sicher bin, was Sie wollen, aber es ist einfacher und vielleicht näher an der eigentlichen Lösung:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << Sort( By( :sex ), Order( Ascending ), Replace Table );
dt << New Column( "Z Score", Formula( (:weight - Col Mean( :weight, :sex )) / Col Std Dev( :weight, :sex ) ) );
dt << New Column( "S_Hi",
Formula( If( :sex == Lag( :sex ), Max( 0, :zscore + Lag( :S_Hi ) ), Max( 0, :zscore ) ) )
);
Betreff: Sammeln der kumulierten Summe aus der ausgewerteten SpalteDanke für die Hilfe, Nelson, aber leider tritt der Max-Wert nie ein. Bei Anwendung ist die 40. Reihe bereits ein 5E+10-Wert. Im Wesentlichen möchte ich nur die Summe aller vorherigen Werte in der Spalte erhalten und sie in dieser Zeile zum zscore hinzufügen.
Betreff: Sammeln der kumulativen Summe aus der ausgewerteten SpalteHier ist, wie ich das angehen würde
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << New Column( "zscore",
Formula( (:weight - Col Mean( :weight, :sex )) / Col Std Dev( :weight, :sex ) )
);
dt << Sort( By( :sex ), Order( Ascending ), Replace Table );
dt << New Column( "S_Hi",
Formula(
If(row()==1,cum=0);
If( :sex == Lag( :sex ),
x=Max( 0, :zscore + cum ),
x=Max( 0, :zscore )
);
cum=cum+x;
x;
)
);