从评估列中收集累计总和大家好,
我试图创建一个列来评估它的前一行并将 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;
)
);