Hi all-
I have the following dataset:
patient ID drug class quarter 1 quarter2 quarter3...
1 4 0 1 1
1 3 1 0 0
1 7 0 0 0
1 1 0 0 0
The quarters continue over 36 quarters and 0/1 under the quarter columns indicate use of that drug during that quarter.
I'm trying to determine the best way possible to note medication additions? This is a very large dataset (n=~900,000 pts) and I'm applying a rule to the addition- the drug has to show up for a consecutive 2 quarters for the person to be considered a "user"
Do I need to re-structure the data?
Any help would be greatly appreciated- thanks much!
To get the list of first additions, you can use an array, this way:
data have;
input patientID drugClass quarter1-quarter6;
datalines;
1 4 0 1 1 0 1 1
1 3 1 0 0 1 1 0
1 7 0 0 0 0 1 0
1 1 0 0 0 0 0 0
;
data firstAdditions(keep=patientID drugClass addq);
set have;
array q{*} quarter:;
do addQ = 1 to dim(q)-1;
if q{addQ} and q{addQ+1} then do;
output;
leave;
end;
end;
run;
proc print data=firstAdditions noobs; run;
PG
Another way to identify is to convert them into strings:
data want;
set have;
array qtr quarter:;
if find(cats(of qtr(*)),'11');
run;
Haikuo
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.