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
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.