過去3期間を使用した移動平均の計算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期間を使用した移動平均の計算私があなたに与えたのは、新しい列で使われることを意図した新しい式です。それは各行に新しい値を作成します。
データテーブルで、プルダウンメニューに移動します
Cols ==>新しい列
必要に応じて列に名前を付けます
左下隅にあるをクリック
列のプロパティ
式を選択
「式なし」と書かれている青いボックスをダブルクリックします
開いたウィンドウで、数式を貼り付けます
再:過去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 )
]
);