我需要以下方面的幫助。我的輸入資料集如下:
如果 QC 列中的一個值是 FAIL,則最后一列“Final”中的所有值都應該是 REPEAT,而不管 QC 列中發現的其他值是什么。所需的輸出資料集: 
謝謝你。
以下代碼未給出預期結果,因為沒有為其他 qc 值指定條件。
data exp;
set exp;
if QC = "FAIL" then do;
FINAL= "REPEAT";
end;
run;
uj5u.com熱心網友回復:
您需要讀取資料兩次。第一時間查明是否有QC不合格。第二次再次獲取記錄,以便您可以附加新變數并將它們寫入輸出資料集。一旦發現任何失敗,第一遍就可以停止。
data want ;
do while(not eof1);
set have end=eof1;
if qc = 'FAIL' then do;
final='REPEAT';
eof1=1;
end;
end;
do while(not eof2);
set have end=eof2;
output;
end;
stop;
run;
uj5u.com熱心網友回復:
您必須處理整個資料集以確定是否不需要更改。
在此示例中,檢查是否FAIL出現在任何行中,然后有條件地更改為REPEAT
data have;
id 1;
input value qc $ @@;
datalines;
. FAIL 1 PASS 0 PASS 1 PASS . FAIL
;
%let repeat_flag = 0;
data _null_;
set have;
where qc = 'FAIL';
call symputx ('repeat_flag',1);
stop;
run;
%if &repeat_flag %then %do;
data have;
set have;
qc = 'REPEAT';
run;
%end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/537929.html
標籤:if语句SAS
上一篇:R:根據值范圍重置資料框中的值
下一篇:查找升級值(復合百分比)
