1000万エントリを含む列の移動平均を計算する方法?移動平均を計算するために1000万行の列で以下の式を実行しようとしていますが、スクリプトは永遠に実行され続け、jmpは応答を停止します。thisTable << New Column( "av" :x [インデックス(行() - 99999、行())])))。計算式に制限はありませんか。この場合、移動平均はどのように計算できますか?
再:1000万エントリを持つ列の移動平均を計算する方法?Col移動平均()関数は式から簡単に取り出すことができます。 私の前の記事の2番目の式で提供されているアプローチを取ると、データを合計してから除算することによって移動平均を計算すると、あなたが望むものが得られます。 提供されたコードがどのように機能するのかを必ず理解してください。 これは式の新しい修正です。
If( Row() == 1,
theLag = 100000;
theSum = 0;
);
If(
Row() <= theLag,
theSum = theSum + :x;
theAvg = theSum/Row(),
theAvg = ((theSum - :x[Row() - theLag]) + :x) / theLag
);
theAvg;
再:1000万エントリを持つ列の移動平均を計算する方法?このスクリプトはJMP12では機能しません(Col Moving AverageはJMP12ではサポートされていません)再:1000万エントリを持つ列の移動平均を計算する方法?これを試して、より速く実行されるかどうかを確認してください
Col Moving Average( :x, 1, 999999, 0 )
ドキュメントと例については、Scripting Indexを調べてください。
または、これを試してみると、各行の計算に対して100000行のリストの平均を計算し、それを1回の減算、1回の加算、および1回の除算に削減する必要がなくなります。
If( Row() == 1,
theLag = 100000;
theSum = Sum( :x[Index( 1, theLag )] );
);
If(
Row() < theLag, theAvg = <FONT color="#c7254e" face="Consolas" style="background-color: #f4f2f9;">Col Moving Average( :x, 1, theLag, 0 )</FONT>,
Row() == theLag, theAvg = theSum / theLag,
theAvg = ((theSum - :x[Row() - theLag]) + :x) / theLag
);
theAvg;
再:1000万エントリを持つ列の移動平均を計算する方法?私は提案された解決策を試しましたが、それは正しい答えを与えません、可能性が助けてください
再:1000万エントリを持つ列の移動平均を計算する方法?あなたは正しいです、式は間違っていました。 "theSum"の値を正しく設定していませんでした。 正しい結果が得られるはずです。
If( Row() == 1,
theLag = 3;
theSum = 0;
);
If( Row() <= theLag,
theSum = theSum + :yield;
theAvg = theSum / Row();
,
theAvg = ((theSum - :yield[Row() - theLag]) + :yield) / theLag;
theSum = (theSum - :yield[Row() - theLag]) + :yield;
);
theAvg;
再:1000万エントリを持つ列の移動平均を計算する方法?はい、今ではエラーをスローしませんが、1000万エントリで動作するかどうかを確認する必要があります
再:1000万エントリを持つ列の移動平均を計算する方法?それは10,000,000行で動作するはずです。
テスト結果を返信してください。
これは式のより速いバージョンです.....それは合計の2番目の計算の必要性を取り除きます
If( Row() == 1,
theLag = 3;
theSum = 0;
);
If( Row() <= theLag,
theSum = theSum + :yield;
theAvg = theSum / Row();
,
theSum = (theSum - :yield[Row() - theLag]) + :yield;
theAvg = theSum / theLag;
);
theAvg;
再:1000万エントリを持つ列の移動平均を計算する方法?私のようなポイントアンドクリックの人々のためにあなたは興味のある列のヘッダを右クリックして "New Formula Column">行>移動平均を選択することによって列の移動平均を得ることができます。 重み付けを使用するかどうかを決定するには、もう1〜2回クリックする必要がありますが、シミュレートした10M行のデータテーブルで[OK]をクリックした後は、非常に高速でした。
HTH
ビル