評価された列から累積合計を収集するやあみんな、
前の行を評価して zscore を追加し、この評価と 0 の間の最大値を取る列を作成しようとしています。 Cumulative Sum 方程式の周りにラグ式を移動しようとしましたが、運がありませんでした。 前の行に関係なく、zscore の値のみを取得しています。 これを解決する方法についての助けをいただければ幸いです。
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 ) ) ) )
Re: 評価された列から累積合計を収集するちょっとマーク、これは完璧にうまくいきました。 フィードバックをお寄せいただきありがとうございます!
Re: 評価された列から累積合計を収集するジムの解決策は元のスクリプトに基づいていると思いますが、別の累積合計を使用したいとは思いません。 次のスクリプトは、あなたが何を望んでいるのかまだよくわからないため、正しくありませんが、より単純で、おそらく実際のソリューションに近いものです。
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 ) ) )
);
Re: 評価された列から累積合計を収集するネルソンの助けに感謝しますが、残念ながら最大値が作動しません. 適用すると、40 行目はすでに 5E+10 の値です。 本質的には、列の以前のすべての値の合計を取得し、それらをその行の zscore に追加したいだけです。
Re: 評価された列から累積合計を収集するこれが私がこれにアプローチする方法です
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;
)
);