Quiero agregar una fórmula para restar la fila 1 y 4, luego la fila 2 y 5 ... luego la fila 3 y 6 y así sucesivamente ... ¡urgente, por favor, ayuda!Hola,
:RESULTADO es la columna donde quiero restar la fila 1 y la fila 4, luego la fila 2 y la fila 5 y así sucesivamente hasta que terminen todas las filas.
:TEST es actualmente una columna vacía donde quiero almacenar los resultados de la columna :RESULT
Probé el siguiente script en la fórmula pero no funciona. ¿No estás seguro de por qué?
:RESULT << Data Type( Numeric );
:TEST << Data Type( Numeric );
For( i = 1, i <= N Rows(), i++,
Abs( :RESULT[i] - :RESULT[i + 3] )
);
secuencias de comandosRe: Quiero agregar una fórmula para restar la fila 1 y 4, luego la fila 2 y 5 ... luego la fila 3 y 6 y así sucesivamente ... ¡urgente, por favor, ayuda!Además de usar Lag para calcular, también hay una función de fila específica para esto: Dif ( Referencia de sintaxis JSL > Funciones JSL > Funciones de fila - Dif(col, n) ). A veces puede funcionar mejor que usar Lag.
Re: Quiero agregar una fórmula para restar la fila 1 y 4, luego la fila 2 y 5 ... luego la fila 3 y 6 y así sucesivamente ... ¡urgente, por favor, ayuda!Además, para calcular con filas diferentes, recomiendo la función lag, que devuelve el valor de una fila en relación con la fila actual, y no necesita un bucle.

Re: Quiero agregar una fórmula para restar la fila 1 y 4, luego la fila 2 y 5 ... luego la fila 3 y 6 y así sucesivamente ... ¡urgente, por favor, ayuda!Su fórmula no debe contener un bucle For(), a menos que no esté ejecutando esto como una fórmula JMP, sino como JSL en código abierto.Si especifica el código como una fórmula para la columna, JMP recorre automáticamente cada fila de datos y aplica la fórmula.Por lo tanto, el ciclo For() no es necesario. A continuación se muestra un pequeño script que crea una nueva columna y luego agrega una fórmula para la columna.
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "The New Column",
formula( If( :ATT1 == 0, 0, Abs( :RESULT - :RESULT[Row() + 3] ) ) )
);
Si tiene una columna vacía (por ejemplo, llamada "mytest"), puede usar una función For Each Row() para recorrer la tabla de datos y calcular valores
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
If( :ATT1 == 0,
:mytest = 0,
:mytest = Abs( :RESULT - :RESULT[Row() + 3] )
)
);
Finalmente, como ha indicado, puede usar un bucle For() para recorrer la tabla de datos.Este código requiere que uno especifique la fila específica para operar
Names Default To Here( 1 );
dt = Current Data Table();
For( i=1, i<=N Rows(dt), i++,
If( :ATT1[i] == 0,
:mytest[i] = 0,
:mytest[i] = Abs( :RESULT[i] - :RESULT[i + 3] )
)
);
Re: Quiero agregar una fórmula para restar la fila 1 y 4, luego la fila 2 y 5 ... luego la fila 3 y 6 y así sucesivamente ... ¡urgente, por favor, ayuda!Lo averigué:
Tuve que actualizar la línea:
Abs( :RESULT[i] - :RESULT[i + 3] )
a
:TEST[i]=Abs( :RESULT[i] - :RESULT[i + 3] )