使用最近 3 个时间段计算移动平均线我有一组包含三列的数据;客户、时间段和数量。 TimePeriod 的格式为 yyyymm。 我正在尝试确定一个公式来计算所有客户在过去 3 个时间段内的“滚动平均值”。
例如,在我标记为 201704 的行中,我想要一个公式来返回 201703、201702 和 201701 中所有记录的平均数量。 TimePeriod 可以在数据中多次出现(按客户),这使得它稍微复杂一些。
有什么建议么?
回复:使用最近 3 个时间段计算移动平均线再次感谢您的帮助!
这正是我要找的。
-马特
回复:使用最近 3 个时间段计算移动平均线这是公式的扩展,其中添加了客户
dt = Current Data Table();
tp = :timeperiod;
cus = :Customer;
tmp = Date Increment(
Date MDY( Num( Substr( :timeperiod, 5, 2 ) ), 1, Num( Substr( :timeperiod, 1, 4 ) ) ),
"Month",
-1
);
lagtp1 = Char( Year( tmp ) ) || Try( Substr( "0", Length( Char( Month( tmp ) ) ), 1 ), "" ) ||
Char( Month( tmp ) );
tmp = Date Increment(
Date MDY( Num( Substr( :timeperiod, 5, 2 ) ), 1, Num( Substr( :timeperiod, 1, 4 ) ) ),
"Month",
-2
);
lagtp2 = Char( Year( tmp ) ) || Try( Substr( "0", Length( Char( Month( tmp ) ) ), 1 ), "" ) ||
Char( Month( tmp ) );
Mean(
:Quantity[dt << get rows where( ( :timeperiod == tp | :timeperiod == lagtp1 | :timeperiod == lagtp2 ) &
:Customer == cus)
]
);
回复:使用最近 3 个时间段计算移动平均线你是对的! 这一定是我这边的用户错误:)
如果我想要按客户分隔的方式,假设“客户”在其自己的列中以供参考,这可能吗?
因此,输出列将只计算该行中客户最近 3 个时间段的平均值。
回复:使用最近 3 个时间段计算移动平均线我给你的公式查看给定行的年/月值。 然后它找到 1 个月前的值是多少,以及 2 个月前的值是多少。 然后,它为数据表中所有具有 3 个计算的年/月值中的任何一个的年/月值的行找到平均值。
因此,任何具有年/月值的行,比方说, 201705,将找到数据表中所有被发现具有 201705、201704 或 201703 值的行的平均数量。我的有限测试用例适用于此。 请注意,数据表中行的物理顺序并不重要。 该公式查找整个数据表中与给定行的 3 个时间段匹配的所有行。
如果你能给我一个样本数据表,我可以进一步研究这个。 或者,也许我对您所问内容的解释不正确。
回复:使用最近 3 个时间段计算移动平均线吉姆 - 感谢您的耐心等待。
按照您的指导,我将该公式添加到一个新列中,但我在整列中得到了相同的重复值。
我希望公式只给出最近 3 个时间段的平均值那一排的.
例如,201704 年的平均记录应该只对 2017 年 4 月的最后 3 个时间段(201704、201703、201702)进行平均。 201705 的下一行应该有一个不同的平均值,由 2017 年 5 月的最后 3 个时间段(201705、201704、201703)组成。
想法?
回复:使用最近 3 个时间段计算移动平均线我给你的是一个新公式,旨在用于新列,将为每一行创建一个新值。
在数据表中,转到下拉菜单
列==>新列
随意命名该列
在左下角,单击
列属性
选择公式
双击显示“无公式”的蓝色框
在打开的窗口中,粘贴公式
回复:使用最近 3 个时间段计算移动平均线非常感谢您的回复。
我对脚本很陌生。 有没有一种方法可以按行在新列中输出平均值? 因此,当脚本确定过去 3 个时间段的平均值时,它会在新列中显示每一行的平均值吗?
此外,数据集开头的脚本是否存在问题? 当第一次约会没有 lagtp1 或 lagtp2 时?
回复:使用最近 3 个时间段计算移动平均线这是你的公式
dt = Current Data Table();
tp = :timeperiod;
tmp = Date Increment(
Date MDY( Num( Substr( :timeperiod, 5, 2 ) ), 1, Num( Substr( :timeperiod, 1, 4 ) ) ),
"Month",
-1
);
lagtp1 = Char( Year( tmp ) ) || Try( Substr( "0", Length( Char( Month( tmp ) ) ), 1 ), "" ) ||
Char( Month( tmp ) );
tmp = Date Increment(
Date MDY( Num( Substr( :timeperiod, 5, 2 ) ), 1, Num( Substr( :timeperiod, 1, 4 ) ) ),
"Month",
-2
);
lagtp2 = Char( Year( tmp ) ) || Try( Substr( "0", Length( Char( Month( tmp ) ) ), 1 ), "" ) ||
Char( Month( tmp ) );
Mean(
:Quantity[dt << get rows where( :timeperiod == tp | :timeperiod == lagtp1 | :timeperiod == lagtp2 )
]
);