各位,
我在嘗試創建一個作為公式的新列並在 JSL 腳本中向其發送變量時遇到一些麻煩。
我有一個日期表,我試圖計算列的平均滯後。 感興趣的列不一定總是按行均勻間隔,滯後有時會發生變化。 但是,出於我的腳本的目的,只需查看整個列的平均延遲就可以了。
我打算執行此操作的方法(可以手動執行,但更願意使用腳本自動執行)是創建 :X 的 Lag 列,然後取 :X-:Lag(X) 的差值,然後取上校的意思是。 公式(數學)應該是這樣的:
ave_lag = Col Mean(:X-:Lag(X))
我遇到的問題是創建帶有滯後公式的新列。 每次我嘗試評估腳本時,它都會將我在公式中寫入的文字放在公式中,而不是預期的列名稱中。 我嘗試過dt<
我也嘗試過 Eval(Substitute(Expr())),但它實際上放入了帶引號的字符串,而不是作為引用的列,例如 :X。
例如,在我正在使用的表中,我嘗試了以下代碼:
Eval(
Substitute(
Expr(
dt << New Column( "temp", Formula( Lag( __tcols__ ) ) )
),
Expr( __tcols__ ), xcols[1]
)
);它產生一個“temp”列,但公式如下:

列的名稱是 t,變量 xcols={"t"}。 該公式應類似於 Lag(:t),是對列的引用,而不是列名稱。
我什至嘗試過其他代碼來提取 :t 的列號(它可以在數據表中更改),然後將 Column(#) 插入公式中,但這也不起作用。
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
)
);它還會生成一個“temp”列,但公式如下:

我認為這應該比我發現的更容易,但我一定做錯了/奇怪的事情,因為我沒有得到我期望的結果。
非常感謝有關如何計算列的平均滯後的任何建議。 我只需要一個數字,最終,我不需要額外的列。
謝謝!,
DS