腳本進行累積和直到達到一定限制我的數據表以 3 列開始:日期、Test_Qty 和 Fail_Qty。
我正在為 2 個新列(Cumulative_Sum_Test_Qty 和 Cumulative_Fail_Qty)創建腳本。
Cumulative_Sum_Test_Qty 列中,測試數量為從當前行到上一行的累計和,滿足 300 個數量形成一批數據。
在Cumulative_Sum_Fail_Qty中,失敗數量是從當前行到對應於累積和測試數量發生的前幾行的累積和。
在為兩列的累積總和創建腳本時,我陷入了困境。
任何人都可以在這裡提供幫助嗎
高級統計建模自動化和腳本編寫大規模定制回复:執行累積和直到達到一定限制的腳本謝謝吉姆。 有用。
我研究了你提供的腳本邏輯。 這有助於我增長知識。
我感謝您的幫助和指導。
謝謝。
回复:執行累積和直到達到一定限制的腳本好的......我很欣賞更清晰的定義。下面的腳本似乎適用於您的測試數據
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Cumulative_Sum_Test_Qty" );
dt << New Column( "Cumulative_Sum_Fail_Qty" );
dt:Cumulative_Sum_Test_Qty[1] = dt:Test_Qty[1];
dt:Cumulative_Sum_Fail_Qty[1] = dt:Fail_Qty[1];
holdTest = dt:Test_Qty[1];
holdFail = dt:Fail_Qty[1];
For( theRow = 2, theRow <= N Rows( dt ), theRow++,
If( dt:Cumulative_Sum_Test_Qty[theRow - 1] > 300,
holdTest = :Test_Qty[theRow];
holdFail = :Fail_Qty[theRow];
curRow = theRow;
While( holdTest < 300,
curRow = curRow - 1;
holdTest = holdTest + :Test_Qty[curRow];
holdFail = holdFail + :Fail_Qty[curRow];
);
dt:Cumulative_Sum_Test_Qty[theRow] = holdTest;
dt:Cumulative_Sum_Fail_Qty[theRow] = holdFail;
,
dt:Cumulative_Sum_Test_Qty[theRow] = dt:Cumulative_Sum_Test_Qty[theRow - 1] + dt:Test_Qty[theRow];
dt:Cumulative_Sum_Fail_Qty[theRow] = dt:Cumulative_Sum_Fail_Qty[theRow - 1] + dt:Fail_Qty[theRow];
)
);
回复:執行累積和直到達到一定限制的腳本謝謝吉姆。
我需要的是超過 300 後,在下一行中,再次發生新的累積和,直到超過 300,...
這是一種向後移動的累積和......這就是我陷入困境的地方。

回复:執行累積和直到達到一定限制的腳本這是一個解決方案。我假設一旦你超過 300,你就會重新啟動。如果您需要在超過 300 之前停下來,則邏輯更改非常簡單。
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Cumulative_Sum_Test_Qty" );
dt << New Column( "Cumulative_Sum_Fail_Qty" );
dt:Cumulative_Sum_Test_Qty[1] = dt:Test_Qty[1];
dt:Cumulative_Sum_Fail_Qty[1] = dt:Fail_Qty[1];
holdTest = dt:Test_Qty[1];
holdFail = dt:Fail_Qty[1];
For( theRow = 2, theRow <= N Rows( dt ), theRow++,
If( dt:Cumulative_Sum_Test_Qty[theRow - 1] > 300,
dt:Cumulative_Sum_Test_Qty[theRow] = dt:Test_Qty[theRow];
dt:Cumulative_Sum_Fail_Qty[theRow] = dt:Fail_Qty[theRow];
,
dt:Cumulative_Sum_Test_Qty[theRow] = dt:Cumulative_Sum_Test_Qty[theRow - 1] + dt:Test_Qty[theRow];
dt:Cumulative_Sum_Fail_Qty[theRow] = dt:Cumulative_Sum_Fail_Qty[theRow - 1] + dt:Fail_Qty[theRow];
)
);