BookmarkSubscribeRSS Feed
nikknock
Calcite | Level 5

Hello all,

I use SAS 9.3 here and there for work stuff, I know some of the basics but I'm drawing a blank trying to figure out 2 things. Was really hoping for some help.

1) I have variable of just numbers from 0-100. I'd like to tell SAS to group them into 3 groups (0, 1-10, and 10+) so I can analyze using those three groups. How can I do this? I know it's probably something simple but I'm drawing a blank...

2) I have 10 variables, each with numbers varying from 1-5. I want to tell SAS to give me all the answers that were "1" or "2" or "3" overall and by year...how can I do that?

Everything else I need I was able to figure out one way or another except those...any help would be so appreciated. Thanks. I hope I was clear enough...

6 REPLIES 6
Murray_Court
Quartz | Level 8

1)

/*assign group number based on numeric value*/

data answer1;

set one;

if number_var =0 then group_no=1;

else if number_var le 10 then group_no=2;

else group_no=3;

run;

/*sample frequency analysis*/

proc freq data=answer1;

tables group_no;

run;

2)

/*simple subsetting of numeric variable. */

data answer2;

set two;

where number_var in (1,2,3);

run;

/*print new dataset, year information should have been kept from original dataset,*/

proc print data=answer2;

run;

nikknock
Calcite | Level 5

First one I got down perfect thanks to you. THANK YOU!!

I still need a little bit of help on the second. I might not have been clear enough.

I have a dataset called surveys2.

Within that dataset I have 10 variables, each a separate question. (the variables are named q1 q2 q3 ...q10).

Each questions has a 343 rows, in each row is a number 1-5 or 8 (people's answer to the question)

I want to sum up all the answers of 1, 2, 3, 4 ,5 or 8 separately and break them out by year.

For eg: How many ppl answered three in total or in 2010 for each question and overall.

How can I do that?

Murray_Court
Quartz | Level 8

As I understand survays2 has 11 variables and 343 observations, the first 10 variables have numeric values within (1, 2, 3, 4, 5, 8), (I assume 8 implies the person (observation) didn't answer atall). The last variable is the year.

Q: How many ppl answered three in total or in 2010 for each question and overall.

I am tying to make sense of this question; are you asking how many people answered question the in 2010, and answered question 3 in all time?

If so here is the answer:

/* how did people answer question 3 in 2010> */

proc freq data=survay2(where=(year=2010));

tables q3;

run;

/* how did people answer question 3 in over all years? */

proc freq data=survay2;

tables q3*year;

run;

This should give you a cross-tabulation that provides a yearly breakdown of people's answers.

Reeza
Super User

Change your data format to the following structure:

Person Question Year Response

You can use proc transpose to change the data format.

SAS Learning Module: How to reshape data wide to long using proc transpose

Then you can use Proc Freq to analyze your data easily.

EG.

proc freq data=have;

table year*response/out=summary1;

run;

Fugue
Quartz | Level 8

You can use one of the CAT functions to count how many responses were 1,2,3,4,5 or 8 in each row. Something like:

Data sum_response ;

     set survey2;

     count1 = countc(catt(of q1-q10), '1');

     count2 = countc(catt(of q1-q10), '2');

     etc . . .

     count8 = countc(catt(of q1-q10), '8');

run;

ballardw
Super User

1) I have variable of just numbers from 0-100. I'd like to tell SAS to group them into 3 groups (0, 1-10, and 10+) so I can analyze using those three groups. How can I do this? I know it's probably something simple but I'm drawing a blank...

Another way to analyze things in groups without having to add anything to your data is custom formats.

Try:

Proc format library=work;

     value mygroup

     0 = ' 0'

     1 - 10 = ' 1 to 10'

     11-100='11 to 100'

;

run;

proc freq data= yourdatasetname;

tables yourvariablename;

format yourvariablename mygroup. ;

run;

The text assosiated with the format can be pretty much what you want.

sas-innovate-2024.png

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.

 

Register now!

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

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
  • 6 replies
  • 844 views
  • 0 likes
  • 5 in conversation