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;
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.