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;
Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.
Register today!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.