從評估列中收集累計總和大家好,
我試圖創建一個列來評估它的前一行並將 zscore 添加到它然後取這個評估和 0 之間的最大值。 我試過圍繞累積和方程移動滯後公式,但沒有任何運氣。 無論前一行如何,它只取 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 ) ) ) )
回复:從評估列中收集累計總和嘿馬克,這很完美。 感謝您的反饋!
回复:從評估列中收集累計總和我認為 Jim 的解決方案是基於您的原始腳本,但我認為您不想使用單獨的累計和。 以下腳本不正確,因為我仍然不太確定您想要什麼,但它更簡單,也許更接近真正的解決方案:
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 ) ) )
);
回复:從評估列中收集累計總和感謝 Nelson 的幫助,但不幸的是,Max 值從未生效。 應用時,第 40 行已經是 5E+10 值。 本質上,我只想獲取列中所有先前值的總和,並將它們添加到該行的 zscore。
回复:從評估列中收集累計總和這是我將如何處理這個
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;
)
);