Hello SAS community,
when I run
proc freq data=have;
tables month * Q1 * Q2 / list nocum;
run;
I get the following (showing partial output)
month |
Q1 |
Q2 |
Frequency |
Percent |
Feb-20 |
1 |
1 |
92 |
17.29 |
Mar-20 |
1 |
1 |
41 |
7.71 |
Sep-20 |
1 |
0 |
9 |
1.69 |
Sep-20 |
1 |
1 |
34 |
6.39 |
Oct-20 |
1 |
0 |
15 |
2.82 |
Oct-20 |
1 |
1 |
39 |
7.33 |
Nov-20 |
1 |
0 |
25 |
4.7 |
Nov-20 |
1 |
1 |
20 |
3.76 |
I would like to get the count and % (no decimal places) of subjects who answered one or both questions each month, e.g. in Nov, out of a total of 45 subjects, 44% answered both and 56% answered Q1 only.
Should I use proc report and if so how?
I'm running SAS 9.4 on Windows.
Any help would be appreciated!
Margaret
Sounds like you might want ROWPCTN in Proc TABULATE.
Example:
data have; call streaminit(2020); do date = '01jan2020'd to '31dec2020'd; do rep = 1 to rand('integer',2,5); Q1 = rand('uniform') < 0.6; Q2 = rand('uniform') < 0.4; output; end; end; run; proc tabulate data=have; class date q1 q2; format date monyy6.; table date , q1='Q1 * Q2'*q2=''*n='' q1='Q1 * Q2'*q2='' * rowpctn * f=3. ; run;
Produces
Sounds like you might want ROWPCTN in Proc TABULATE.
Example:
data have; call streaminit(2020); do date = '01jan2020'd to '31dec2020'd; do rep = 1 to rand('integer',2,5); Q1 = rand('uniform') < 0.6; Q2 = rand('uniform') < 0.4; output; end; end; run; proc tabulate data=have; class date q1 q2; format date monyy6.; table date , q1='Q1 * Q2'*q2=''*n='' q1='Q1 * Q2'*q2='' * rowpctn * f=3. ; run;
Produces
Here is an example .
proc sql;
create table want as
select sex,age,
count(*)/(select count(*) from sashelp.class where sex=a.sex) as per format=percent8.2
from sashelp.class as a
group by sex,age;
quit;
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.