我有一些實驗數據,每分鐘測量一次,持續 10 分鐘。
然後我想對集合中間的數據點子集取平均值。
我的解決方案是有一個隱藏列 (:Range),其公式包含條件(通過模態窗口輸入),並將每行設置為 1 或 0(如果要包含在計算中)。
然後,我的輸出列使用 Col Mean 函數來獲取興趣點的平均值。
這部分工作得很好,但我也希望第一個空白行(不包括在計算中)獲取下一行的值,這將有助於進一步的數據操作。 我添加了滯後函數,如下所示。
If( :Range == 1,
Col Mean( :Measurement, :ID, :Range ),
Lag( :Measurement, -1 )
)
問題是,當我將其作為腳本運行時,滯後函數不起作用。 如果我手動輸入上面的公式,它可以正常工作,但下面的腳本僅填充 :Range == 1 的行,儘管事實上我可以看到公式已正確應用於該列。
New Column( "Mean Measurement", Formula(
If( :Range == 1,
Col Mean( :Measurement, :ID, :Range ),
Lag( :Measurement, -1 ))))
這有什麼原因嗎?我可以通過什麼方法強制列重新評估公式以使其正常運行?
請注意,重新運行公式功能似乎沒有執行任何操作
為什麼每隔 1 分鐘進行 10 次測量? 為什麼在時間過程中使用一些觀察的平均值?
如果將整個曲線作為響應值進行分析,您可能會獲得更多信息。 請參閱功能數據瀏覽器以獲得更多想法。 您可以使用 JMP Pro 分析“功能 DOE”。
Lag() 函數對指定行進行操作,它不是“向量化”函數。在列函數中,行是隱式的(表的行),因此它在列公式中工作沒有問題。
對於您的腳本,如果您在 lag 函數語句之前使用 Row()==<行號> 命令指定行,則 Lag 應返回一個值。
Row() = 3;
If( :Range == 1,
Col Mean( :Measurement, :ID, :Range ),
Lag( :Measurement, -1 )
)
另外,為了確保您知道,Lag(:column, ) 的滯後數字參數,如果它是負數,則實際上是“前向滯後”。在上面顯示的示例中,它將查找下一行中的值,而不是上一行中的值。