BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Kyra
Quartz | Level 8

Hi,

I am creating a bar chart but would like to get percentage rather than frequency.

And percentage i am interested in is not percentage of total frequency but percentage of group frequency.

My SAS code is like below:

 

ods graphics on;
proc sgplot data=red.survey2;
vbar I_feel_well_informed_about_the_C /group=Program__select_one_ groupdisplay=cluster ;
format I_feel_well_informed_about_the_C $category. ;
run;

 

And results are attached. I am interested in percentage rather than frequency in y axis.  I a way for the group agree it sums to 100% , for disagree it sums to 100%.

 

Thanks,

 

 

 

 
 

 

 
 

 

 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
Rick_SAS
SAS Super FREQ

I suspect your PROC FREQ call is incorrect. You want to get the row totals. The output should look like the following:

 

data Have;
length Informed Program $8; 
input Informed Program Percent;
datalines;
Agree    Anesth  41 
Agree    Emerg   26
Agree    GenSurg 33
Disagree Anesth  39 
Disagree Emerg    8
Disagree GenSurg 53
Neutral  Anesth  34 
Neutral  Emerg   11
Neutral  GenSurg 55
;

proc sgplot data=Have;
vbar Informed / response=Percent group=Program groupdisplay=cluster;
xaxis discreteorder=data;
yaxis grid values=(0 to 100 by 10) label="Percentage of Total with Group";
run;

View solution in original post

7 REPLIES 7
PaigeMiller
Diamond | Level 26
vbar I_feel_well_informed_about_the_C /group=Program__select_one_ groupdisplay=cluster stat=percent;

For future reference, many people will not download attachments, and so the output you want to show us should be pasted directly into your message.

--
Paige Miller
Rick_SAS
SAS Super FREQ

If you add

STAT=percent

to the VBAR statement, the Y axis will show percentages.

 

Kyra
Quartz | Level 8

Hi,

 

STAT=percent gives me percentage out of total frequency.

I am interested  in getting percentage out of total who agreed, So the sum of 3 bars in agreed should be 100%,

the sum of total who disagreed should be 100% and the sum of neutral should be 100 too.

 

Thanks,

 

 

Rick_SAS
SAS Super FREQ

See the article, "Construct a stacked bar chart in SAS where each bar equals 100%". The article discusses a stacked bar chart, but you can use the same code and change the GROUPDISPLAY= option to CLUSTER

 


proc sort data=sashelp.cars(where=(Type^="Hybrid")) out=cars;
by Origin;                     /* sort X categories */
run;
 
proc freq data=cars noprint;
by Origin;                    /* X categories on BY statement */
tables Type / out=FreqOut;    /* Y (stacked groups) on TABLES statement */
run;
 
title "100% Stacked Bar Chart";
proc sgplot data=FreqOut;
vbar Origin / response=Percent group=Type groupdisplay=cluster;
xaxis discreteorder=data;
yaxis grid values=(0 to 100 by 10) label="Percentage of Total with Group";
run;
Kyra
Quartz | Level 8

Thank you very much for reply! I tried the following code;

 

proc sort data=red.survey2 out=red.informed;
by I_feel_well_informed_about_the_C;
format I_feel_well_informed_about_the_C $category. ;
run;
proc freq data=red.informed noprint;
by I_feel_well_informed_about_the_C;
tables Program__select_one_ / out=red.FreqOutt;
format I_feel_well_informed_about_the_C $category. ;
run;

proc sgplot data=red.FreqOutt;
vbar I_feel_well_informed_about_the_C / response=Percent group=Program__select_one_ groupdisplay=cluster;
xaxis discreteorder=data;
yaxis grid values=(0 to 100 by 10) label="Percentage of Total with Group";
format I_feel_well_informed_about_the_C $category. ;
run; Following is the output.

However, for the group how is sum more than 100%. I wanted it to be 100% for the 3 bars in agree group. similar for disagree and neutral group.

 

I got the  output-SGPlot3.png

 
 
 

 
Rick_SAS
SAS Super FREQ

I suspect your PROC FREQ call is incorrect. You want to get the row totals. The output should look like the following:

 

data Have;
length Informed Program $8; 
input Informed Program Percent;
datalines;
Agree    Anesth  41 
Agree    Emerg   26
Agree    GenSurg 33
Disagree Anesth  39 
Disagree Emerg    8
Disagree GenSurg 53
Neutral  Anesth  34 
Neutral  Emerg   11
Neutral  GenSurg 55
;

proc sgplot data=Have;
vbar Informed / response=Percent group=Program groupdisplay=cluster;
xaxis discreteorder=data;
yaxis grid values=(0 to 100 by 10) label="Percentage of Total with Group";
run;
Kyra
Quartz | Level 8

Thank you very much! This community is great!!!

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

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
  • 7 replies
  • 3394 views
  • 1 like
  • 3 in conversation