Below are my tables I have individual freq sets. I would like to combine all the tables into one set of freqs for a combine total. I am not familiar enough with programming or the SAS program, but I am learning. What programming is needed to complete my issue? Thank you Steve
proc freq data=WORK.'Combined MCOs'n;
tables 'q_90_10 - No1 - Yes'n;
tables 'q_90_20 - No1 - Yes'n;
tables 'q_90_30 - No1 - Yes'n;
tables 'q_90_40 - No1 - Yes'n;
tables 'q_90_50 - No1 - Yes'n;
tables 'q_90_60 - No1 - Yes'n;
tables 'q_90_70 - No1 - Yes'n;
run;
Thank you for your assistance.
This is one way - you can run the code directly and it will create a clean table with all in the same format.
/*This code is an example of how to generate a table with
Variable Name, Variable Value, Frequency, Percent, Cumulative Freq and Cum Pct
No macro's are required
Use Proc Freq to generate the list, list variables in a table statement if only specific variables are desired
Use ODS Table to capture the output and then format the output into a printable table.
*/
*Run frequency for tables;
ods table onewayfreqs=temp;
proc freq data=sashelp.class;
table sex age;
run;
*Format output;
data want;
length variable $32. variable_value $50.;
set temp;
Variable=scan(table, 2);
Variable_Value=strip(trim(vvaluex(variable)));
keep variable variable_value frequency percent cum:;
label variable='Variable'
variable_value='Variable Value';
run;
*Display;
proc print data=want(obs=20) label;
run;
However, I suspect you actually want something different, so I'd recommend you transpose your data set such that you have a data set where its
ID Question Response
1 90_10 1
1 90_20 1
1 90_30 3
2 90_10 2
....
You can accomplish this via a transpose procedure.
Here are some transposing data tutorials:
Wide to Long:
https://stats.idre.ucla.edu/sas/modules/how-to-reshape-data-wide-to-long-using-proc-transpose/
https://stats.idre.ucla.edu/sas/modules/reshaping-data-wide-to-long-using-a-data-step/
Once the data set is flipped you can then use the following code instead:
proc freq data=have;
table question * response;
run;
I analyze a lot of survey data and find this data structure much more useful than your original data structure.
@c-skissner wrote:
Below are my tables I have individual freq sets. I would like to combine all the tables into one set of freqs for a combine total. I am not familiar enough with programming or the SAS program, but I am learning. What programming is needed to complete my issue? Thank you Steve
proc freq data=WORK.'Combined MCOs'n;
tables 'q_90_10 - No1 - Yes'n;
tables 'q_90_20 - No1 - Yes'n;
tables 'q_90_30 - No1 - Yes'n;
tables 'q_90_40 - No1 - Yes'n;
tables 'q_90_50 - No1 - Yes'n;
tables 'q_90_60 - No1 - Yes'n;
tables 'q_90_70 - No1 - Yes'n;
run;
Thank you for your assistance.
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.