0

StDev 関数を使用する他の誰かによって作成されたレポートに取り組んでいます。簡単だと思いましたが、データには各レコードに複数の値が含まれている可能性があるため、各レコードからどの値を取得するかを判断するために if ステートメントが使用されています。レコードごとに 1 つの値 (StDev で使用する必要がある値) を含むテーブルを Excel にエクスポートし、そこで SD を計算してチェックを行いました。

レポートと Excel では、非常に異なる値が返されます :(

そこで、レポートに戻り、追加の数式フィールドを使用して SD 手書きを計算し、一種の決定票として機能させます (指を交差させても、3 番目の値のセットは生成されません...)。

構文エラーを解決しましたが、実行時エラーが引き続き発生します - 「ゼロによる除算」は、以下に示すコードのセクションを強調表示します...

私の数式フィールドは次のとおりです。

{@StDevArrayPopulate} - 詳細セクション

NumberVar Array varStDevArray;
NumberVar varStDevArrayCount;

varStDevArray [varStDevArrayCount] := {ValueToSummarise};

varStDevArrayCount := varStDevArrayCount + 1;

{@StDevArrayCalculate} - グループ フッター内

NumberVar Array varStDevArray;
NumberVar varCounter :=1;
NumberVar varMean := 0;
NumberVar varStDev := 0;
NumberVar varStDevArrayCount;

// START OF MEAN

// Sum of all of the values in the array

for varCounter:= 1 to varStDevArrayCount step 1 do
(
    varMean := varMean + varStDevArray [varStDevArrayCount];
);

// Divide by the total number of values in the array

varMean := varMean / varStDevArrayCount;  // !! This is the line that highlights after the error message !!

// END OF MEAN

// START OF STANDARD DEVIATION

// Subtract the mean from each value in the array and square the result

for varCounter := 1 to varStDevArrayCount step 1 do
(
    varStDevArray[varStDevArrayCount] := (varStDevArray [varStDevArrayCount] - varMean) * (varStDevArray [varStDevArrayCount] - varMean);
);

// Sum of all of the values in the array

for varCounter:= 1 to varStDevArrayCount step 1 do
(
    varStDev := varStDev + varStDevArray [varStDevArrayCount];
);

// Divide by the total number of values in the array

varStDev := varStDev / varStDevArrayCount;

// Square root of mean of differences

varStDev := Sqr(varStDev)

// END OF STANDARD DEVIATION

{@StDevArrayCalculate} - グループ フッター内

NumberVar varMean;
NumberVar varStDev;

"The mean is " & varMean & ", and the standard deviation is " & varStDev & "."

実行中の合計フィールドを使用してみましたが、入力数式フィールドが実行される前に最初のレコードをカウントする必要があるため、エラーが発生しました。また、varStDevArrayCount を 1 に初期化する 4 番目のフィールドをヘッダーに追加しようとしました。

誰か提案はありますか?

4

1 に答える 1

0

詳細レコードがないように見えるため、配列がゼロになっています...初期化しても違いはないと思いますが1、代わりに以下のように小さな変更を加えて確認してください。

if varStDevArrayCount=0
then
varMean :=varMean 
else
varMean := varMean / varStDevArrayCount;

レコードを詳細に確認してからデバッグすることをお勧めします

于 2016-07-01T09:16:27.020 に答える