在SAS中指示符变量首次从1变为0后,保持数据行具有相同的唯一ID
我需要有关SAS代码的帮助,该代码将在满足特定条件后保留具有相同唯一ID的数据行。例如,如果我有一个名为BASE的数据集,如下所示在SAS中指示符变量首次从1变为0后,保持数据行具有相同的唯一ID,sas,Sas,我需要有关SAS代码的帮助,该代码将在满足特定条件后保留具有相同唯一ID的数据行。例如,如果我有一个名为BASE的数据集,如下所示 Account_Number Default_Indicator 1010 0 1010 0 1010 1 1010 1 1010 1 1010 0 1010 0 1010 0 1010
Account_Number Default_Indicator
1010 0
1010 0
1010 1
1010 1
1010 1
1010 0
1010 0
1010 0
1010 1
1010 1
1020 0
1020 0
1020 0
1020 1
1020 1
1020 1
1020 0
1020 0
1020 1
1020 1
Account_Number Default_Indicator
1010 0
1010 0
1010 0
1010 1
1010 1
1020 0
1020 0
1020 1
1020 1
我希望最终的数据集在默认_指示符第一次从1变为0后保留行,如下所示
Account_Number Default_Indicator
1010 0
1010 0
1010 1
1010 1
1010 1
1010 0
1010 0
1010 0
1010 1
1010 1
1020 0
1020 0
1020 0
1020 1
1020 1
1020 1
1020 0
1020 0
1020 1
1020 1
Account_Number Default_Indicator
1010 0
1010 0
1010 0
1010 1
1010 1
1020 0
1020 0
1020 1
1020 1
非常感谢您的帮助。您可以使用“按组处理”,只需将NOTSORTED关键字添加到BY语句中即可。使用LAG()函数访问上一个数据步骤迭代中的值。保留指示已找到1->0转换的标志变量。请确保在启动新帐户时重置
data have;
row+1;
input Account_Number Default_Indicator @@ ;
cards;
1010 0 1010 0
1010 1 1010 1 1010 1
1010 0 1010 0 1010 0
1010 1 1010 1
1020 0 1020 0 1020 0
1020 1 1020 1 1020 1
1020 0 1020 0
1020 1 1020 1
;
data want ;
set have;
by account_number default_indicator notsorted;
lag_indicator=lag(default_indicator);
if first.account_number then call missing(found,lag_indicator);
if first.default_indicator and default_indicator=0 and lag_indicator=1 then found+1;
if found then output;
drop lag_indicator found;
run;
结果(不含DROP语句)
你好,戈登,谢谢我已经删除了SQL标记非常感谢你,汤姆,这段代码很有效,我真的很感谢你的帮助!