Carissimi,
Ho qualche problema nel provare a creare una nuova colonna che sia una formula e a inviarle una variabile all'interno del mio script JSL.
Ho una tabella di date in cui sto cercando di calcolare il ritardo medio di una colonna. La colonna di interesse non è necessariamente sempre distanziata in modo uniforme tra le righe, i ritardi a volte possono cambiare. Tuttavia, ai fini del mio script, è corretto osservare semplicemente il ritardo medio per l'intera colonna.
Il modo in cui avrei fatto questo (e posso farlo manualmente, ma preferirei automatizzarlo con lo script) è creare una colonna Lag di :X e poi prendere la differenza di :X-:Lag(X), quindi prendere il Col. Me ne intendo. Dal punto di vista della formula (matematica) dovrebbe assomigliare a:
ave_lag = Col Media(:X-:Lag(X))
Il problema che sto riscontrando è creare la nuova colonna con la formula Lag al suo interno. Ogni volta che provo a valutare lo script, inserisce il testo letterale di ciò che scrivo nella formula e non il nome della colonna prevista. Ho provato il comando dt<
Ho anche provato Eval(Substitute(Expr())), ma inserisce letteralmente la stringa tra virgolette, non la colonna come riferimento, come :X.
Ad esempio, nella tabella con cui sto lavorando, ho provato questo codice:
Eval(
Substitute(
Expr(
dt << New Column( "temp", Formula( Lag( __tcols__ ) ) )
),
Expr( __tcols__ ), xcols[1]
)
);Che produce una colonna "temp", ma la formula è la seguente:

Il nome della colonna è t e la variabile xcols={"t"}. La formula dovrebbe assomigliare a Lag(:t), un riferimento alla colonna, non al nome della colonna.
Ho anche provato quest'altro codice per estrarre il numero di colonna di :t (può cambiare all'interno della tabella dati) e quindi inserire Colonna(#) nella formula, ma anche questo non funziona.
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
)
);Che produce anche una colonna "temp", ma la formula è la seguente:

Pensavo che dovrebbe essere più facile di quanto sto scoprendo, ma devo fare qualcosa di sbagliato/strano perché non ottengo i risultati che mi aspetterei.
Qualsiasi suggerimento su come calcolare il ritardo medio di una colonna è molto apprezzato. Ho bisogno di un solo numero, in definitiva, non ho bisogno delle colonne extra.
Grazie!,
DS