我想知道是否可以根据上一行中的值修改或删除记录。例如,
data test;
input id seq var $ @@;
datalines;
1 1 Y
1 2 .
2 1 N
2 2 a
;
run;
对于每个id,我想删除seq = 2 if(var ='Y'其中seq = 1)。例如,对于id = 1,如果seq = 1且var ='Y',则删除其中id = 1和seq = 2的地方。
在SQL中最简单:
proc sql;
delete from test T where exists (
select 1 from test E where E.id=T.id and E.seq=1 and E.var='Y')
and seq=2;
quit;
数据步骤也是可能的:
data want;
set test;
retain deleteme;
if seq=1 then do;
if var='Y' then deleteme=1;
else deleteme=0;
end;
else if seq=2 and deleteme=1 then delete;
run;
您需要保留所有记录的值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句