BookmarkSubscribeRSS Feed
FelipOH
Calcite | Level 5

Hi:

 

I am having trouble analyzing Multiple Choice questions of a survey.

Survey Monkey provided me a table with all answers to my questions.

 

For multiple choice questions it coded each choice into one variable.

When I analyze the data for one question, I get many tables (one for each variable).

I would like to know if it possible to get all "choice" variables in one single table:

 

With the current code:

 

Proc freq data=work.cmoj;
Tables (
Principales_act_1
Principales_act_2
Principales_act_3
Principales_act_4
Principales_act_5
Principales_act_6
Principales_act_7
Principales_act_otro) *Attendance_2019/ nocol norow;
Run;

 

I get one table for each variable, but what I want to do is have one table that includes all choice variable in rows, and the crossed variable choices in columns.

 

Thank you very much.

 

 

 

4 REPLIES 4
Reeza
Super User
You need to change your data structure. Transpose your data such that you have your data structured such as:


ID Question Response Attendance_2019
1 1 1 0
1 2 5 0
1 3 4 0
1 4 3 0

Then you can use a proc freq. Or you can capture those results and then use PROC TRANSPOSE on the results. Either are options.

FelipOH
Calcite | Level 5

Hi Reeza:

Thank you very much for answer. I think transposing would't do what I need.

 

My data structure is in this way:

 

Attribute__1Attribute__2Attribute__3Attribute__4Attribute__5Type_assit
    Socializefreq
SessionsCongress   ocas
SessionsCongressCertificationSocial ServiceSocializefreq
Sessions    ocas
SessionsCongressCertification  freq
SessionsCongressCertification  ocas
SessionsCongressCertification Socializefreq

 

What I want to read is in this way:

 

 freqocasTotalfreqocasTotal
Sessions1091936%38%37%
Congress761325%25%25%
Certification63921%13%17%
Social Service2247%8%8%
Socialize34711%17%13%
 282452100%100%100%

 

Hope this can illustrate my issue, thanks again for your time.

 

Reeza
Super User
Transposing would do exactly what you want. Have you tried it?

proc transpose data=have out=long;
by type_assist;
var attribute1-attribute5;
run;

proc freq data=long;
table col1*type_assist;
run;

Or PROC TABULATE for percentages.
This is one approach, there are others. Feel free to choose the solution that meets your needs.
FelipOH
Calcite | Level 5
Thank you very much for the info!

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 4 replies
  • 913 views
  • 0 likes
  • 2 in conversation