Estimados,
Tengo problemas al intentar crear una nueva columna que sea una fórmula y enviarle una variable dentro de mi script JSL.
Tengo una tabla de fechas en la que intento calcular el retraso promedio de una columna. La columna de interés no siempre está necesariamente espaciada uniformemente por filas; los retrasos a veces pueden cambiar. Sin embargo, para los propósitos de mi script, está bien simplemente mirar el retraso promedio de toda la columna.
La forma en que iba a hacer esto (y puedo hacerlo manualmente, pero preferiría automatizarlo con un script) es crear una columna Lag de :X y luego tomar la diferencia de :X-:Lag(X), luego tomar la Col Qué significa eso. En términos de fórmula (matemática), debería verse así:
ave_lag = Col Media(:X-:Lag(X))
El problema que tengo es crear la nueva columna con la fórmula Lag. Cada vez que intento evaluar el script, coloca el texto literal de lo que escribo en la fórmula y no el nombre de la columna deseada. Probé el comando dt<
También probé Eval(Substitute(Expr())), pero literalmente coloca la cadena entre comillas, no la columna como referencia, como por ejemplo: X.
Por ejemplo, en la tabla con la que estoy trabajando, probé este código:
Eval(
Substitute(
Expr(
dt << New Column( "temp", Formula( Lag( __tcols__ ) ) )
),
Expr( __tcols__ ), xcols[1]
)
);Lo que produce una columna "temporal", pero la fórmula es la siguiente:

El nombre de la columna es t y la variable xcols={"t"}. La fórmula debería verse como Lag(:t), una referencia a la columna, no el nombre de la columna.
Incluso probé este otro código para extraer el número de columna de :t (puede cambiar dentro de la tabla de datos) y luego insertar la Columna (#) en la fórmula, pero esto tampoco funciona.
collist = dt << Get Column Names( string ); //creates a list of the column names
colnum = Loc( collist, xcols[1] )[1]; //locates the position in the list of the script variable xcols[1].
//This previous part basically gets the column number of the local variable xcol in the data table (it can change).
//This is the script where I'd like it to substitute
Eval(
Substitute(
Expr(
dt << New Column( "temp", Formula( Lag( Column( __tcols__ ) ) ) )
),
Expr( __tcols__ ), colnum
)
);Lo que también produce una columna "temporal", pero la fórmula es la siguiente:

Pensé que esto debería ser más fácil de lo que estoy descubriendo, pero debo estar haciendo algo mal/extraño porque no estoy obteniendo los resultados que esperaba.
Se agradece mucho cualquier sugerencia sobre cómo calcular el retraso promedio de una columna. Solo necesito un número; en última instancia, no necesito las columnas adicionales.
¡Gracias!,
DS