Recopilación de la suma acumulada de la columna evaluadaHola a todos,
Estoy tratando de crear una columna que evalúe su fila anterior y le agregue el zscore y luego tome el máximo entre esta evaluación y 0. Intenté mover la fórmula de retraso alrededor de la ecuación de la suma acumulativa, pero no tuve suerte. Solo toma el valor de zscore independientemente de la fila anterior. ¡Cualquier ayuda sobre cómo resolver esto sería muy apreciada!
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: Recopilación de la suma acumulada de la columna evaluadaHola Mark, esto funcionó perfectamente. ¡Gracias por la respuesta!
Re: Recopilación de la suma acumulada de la columna evaluadaCreo que la solución de Jim se basa en su guión original, pero no creo que quiera usar una suma acumulativa separada. El siguiente script no es correcto porque todavía no estoy muy seguro de lo que quiere, pero es más simple y quizás más cercano a la solución real:
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: Recopilación de la suma acumulada de la columna evaluadaGracias por la ayuda Nelson, pero desafortunadamente el valor máximo nunca se activa. Cuando se aplica, la fila 40 ya tiene un valor de 5E+10. En esencia, solo quiero obtener la suma de todos los valores anteriores en la columna y agregarlos al puntaje z en esa fila.
Re: Recopilación de la suma acumulada de la columna evaluadaAsí es como abordaría esto
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;
)
);