我想總結一個基於某些條件使用保留的變量。我有這些字段account_id,日期,交易,價值和transaction_type。保留的變量不被保留
的數據由ACCOUNT_ID和日期
我要總結的值,直到第一TRANSACTION_TYPE不是(「A」)
排序我有這個
data dset;
set dset;
by account_id;
retain sum_flag sum;
if first.account_id then do;
sum_flag = 1;
sum=0;
end;
if transaction_type not in ('A') then sum_flag = 0;
if sum_flag = 1 then sum=sum +value;
run;
我的問題是如果A中的第一個transaction_type那麼它工作正常,但如果下一個transaction_type也是sum_flag設置爲。而不是保持爲1.爲什麼會發生這種情況?
我認爲這與 有關,如果transaction_type不在('A')then sum_flag = 0; 沒有它,變量sum_flag沒有被重置爲丟失,如果事務處於'A'中,但我只希望該值保留到第一個非'A'事務。
發佈示例數據來說明問題。另外,由於您正在覆蓋您的輸入數據集,您是否確定SUM和SUM_FLAG在輸入數據中不是變量?如果是這樣,那麼RETAIN是無用的,因爲SET語句運行時這些值將被覆蓋。 – Tom
我沒有看到他們將被設置爲失蹤的原因。我在一些虛擬數據上測試了你的代碼,它總結得很好。 – user2877959