基于来自其他列的条件的列的 '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),
.
)
)
从脚本索引/脚本指南中检查每个函数/公式的作用尽管检查来自公式编辑器的选定子表达式结果以了解它在做什么,因为它非常混乱:
