基於來自其他列的條件的列的 'n' 行平均值 -大家好,
我正在尋找基於其他 coulmn(--“Customer_ID”)的 'n' 行平均值(在附加的示例中,n == 3)。 如果我的每個組(客戶)的行號是“n”的整數乘數,即 [Row == Integer Constant xn]。 我的基本公式工作正常。 但是如果 Row != Integer Constant xn,它會從其他組中取出剩餘的行。 這給了我錯誤的結果。
我想要的是 -
最佳案例 - 根據 Cutomer_ID 計算數據子集排序的 'n' 行平均值,並為最後剩餘的行計算前一個平均值的平均值。
否則 - 保留空值。
我試圖放置 :Customer_ID != Lag(:Customer_ID, -2) 但它對我不起作用。 我可以在 Customer_ID 上拆分錶,然後進行計算,但是 - 有超過 5000 個 ID 和大約 20 列要完成平均。 這似乎不是最好的主意!
請問有什麼幫助嗎?
謝謝。

腳本編寫回复:基於其他列的條件的列的“n”行平均值 -這是我想出的公式

If( Row() == 1 | :Customer_ID != Lag( :Customer_ID ),
count = 0
);
If( count == 3, count = 0 );
count = count + 1;
If(
count == 1,
currentAvg = Col Moving Average( :Value, 1, before = 0, after = 2, :Customer_ID );
display = currentAvg;,
:Customer_ID == Lag( :Customer_ID, -2 ), display = .,
display = currentAvg
);
display;
您需要花時間閱讀幫助下拉菜單下的 JMP 文檔庫中的腳本指南!
回复:基於其他列的條件的列的“n”行平均值 -不知道這是否適用於所有情況,但它確實適用於提供的示例數據:
If(Col Cumulative Sum(1, :Customer_ID) > Col Number(:Value, :Customer_ID) - 1,
Lag(Col Moving Average(:Value, 1, 0, 2, 0, :Customer_ID), 1),
If(Modulo(Col Cumulative Sum(1, :Customer_ID), 3) == 1,
Col Moving Average(:Value, 1, 0, 2, 0, :Customer_ID),
.
)
)
從腳本索引/腳本指南中檢查每個函數/公式的作用儘管檢查來自公式編輯器的選定子表達式結果以了解它在做什麼,因為它非常混亂:
