Im creating a table from a larger data set, and I know there must be a more efficient way to do this. I need to select patients between the age of 2 and 13 with a diagnosis "493XX" in the DX1, DX2,DX3 or DX4 variable field. Right now, I'm doing this in 2 tables-- 1st grabing the age group I need, and then in a seperate data step, searching the DX from that table.
data need1_C1407;
set have_ C1407;
where Patage between 2 and 13;
run;
data need_AD1407;
set need1_C1407;
where dx1 like '493%' or
dx2 like '493%' or
dx3 like '493%' or
dx4 like '493;
run;
I've tried doing this in one step, but I keep getting an error. Thanks!!
In addition to Reeza's suggestion, the program would be slightly faster to switch from " like " to " =: ". In combination, the result might look like this:
data want;
set have;
where (2 <= Patage <= 13)
and (dx1 =: '493' or dx2 =: '493' or dx3 =: '493' or dx4 =: '493');
run;
(Looks like great minds think alike, and perhaps at the same time!)
"Like" is an SQL function, not datastep.
If you DX codes are character try:
DX1 =: "493" or ...
The =: is "starts with"
In addition to Reeza's suggestion, the program would be slightly faster to switch from " like " to " =: ". In combination, the result might look like this:
data want;
set have;
where (2 <= Patage <= 13)
and (dx1 =: '493' or dx2 =: '493' or dx3 =: '493' or dx4 =: '493');
run;
(Looks like great minds think alike, and perhaps at the same time!)
This syntax worked well. Thank you!
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.