I am counting number of subjects of screened and screen failure and need to condition them based on condition
proc sql;
create table scrnd as
select count(SUBJID) as screened
where term="SCREENED" from subjd;
create table scrfail as
select count(SUBJID) as scrnfail
where term="SCRNFAIL" from subjd;
quit;
Is there any precise way to do only in one create statement to get rid of set later?
Use proc freq for that:
data have;
input subjid term $;
cards;
1 SCREENED
2 SCREENED
3 SCRNFAIL
4 SCREENED
5 SCRNFAIL
;
run;
proc freq data=have;
tables term / out=want;
run;
Since you get only 1-column,1-row datasets in each step, what are you planning to do with the contents of these datasets later?
I am making a table of various counts of patients and wondering if there is any smarter way in doing in single create statement
Use proc freq for that:
data have;
input subjid term $;
cards;
1 SCREENED
2 SCREENED
3 SCRNFAIL
4 SCREENED
5 SCRNFAIL
;
run;
proc freq data=have;
tables term / out=want;
run;
There are numerous options, as @Kurt_Bremser proc freq is the simplest. You could also use union:
proc sql; create table scrnd as select count(SUBJID) as screened from subjd where term="SCREENED" union all select count(SUBJID) as scrnfail from subjd where term="SCRNFAIL"; quit;
Or use a datastep and retain counts. To be honest your question is pretty vague.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.