How would you use the data step to find a specific value after a certain criteria is met. I have a long file that has timestamps that is sorted (sample below). I'm looking to find how many patients get "CPAP" any time after a row of HF. The answer here would be patient 1 and 2 so 2 of the 3 patients.
Patient Tier oxygen Timestamp
1 1 NC Time
1 3 HF Time
1 3 CPAP Time
2 3 HF Time
2 3 CPAP Time
3 1 NC Time
So what does your desired result look like? Do you want all observations for the ID's that satisfy this?
If so then do
data have;
input Patient Tier oxygen $ Timestamp $;
datalines;
1 1 NC Time
1 3 HF Time
1 3 CPAP Time
2 3 HF Time
2 3 CPAP Time
3 1 NC Time
;
data want(drop = f:) ;
do until(last.Patient);
set have;
by Patient;
if oxygen = 'HF' then f1 = 1;
if oxygen = 'CPAP' and f1 then f2 = 1;
output;
end;
do until (last.Patient);
set have;
by Patient;
if f2 then output;
end;
run;
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.
Early bird rate extended! Save $200 when you sign up by March 31.
SAS' Charu Shankar shares her PROC SQL expertise by showing you how to master the WHERE clause using real winter weather data.
Find more tutorials on the SAS Users YouTube channel.