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.
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.