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

I would like to create a horizontal bar chart that charts time in days. The x-axis would be total days. The bars would be the sum of 4 different times or phases, and color coded by phase. For example, building S3677 below would have a bar totaling 215 days, with each phase color coded within that bar.

The data is formatted like this:

Building    phase1     phase2     phase3     phase4

S212          201          165           35               46

O254         198           144          120            58

S3677        100           25            36             54

Any suggestions?

Thanks.

1 ACCEPTED SOLUTION

Accepted Solutions
DanH_sas
SAS Super FREQ

First, transpose you data so that it looks like this:

Building     Value     Phase

S212          201       Phase1

S212          165       Phase2

S212          35         Phase3

S212          46         Phase4

...and so on.

Then, run either PROC SGPLOT or PROC GCHART:

proc sgplot data=buildings;

vbar building / response=value group=phase;

run;

proc gchart data=buildings;

vbar building / sumvar=value subgroup=phase;

run;

quit;

Hope this helps!

Dan

View solution in original post

4 REPLIES 4
DanH_sas
SAS Super FREQ

First, transpose you data so that it looks like this:

Building     Value     Phase

S212          201       Phase1

S212          165       Phase2

S212          35         Phase3

S212          46         Phase4

...and so on.

Then, run either PROC SGPLOT or PROC GCHART:

proc sgplot data=buildings;

vbar building / response=value group=phase;

run;

proc gchart data=buildings;

vbar building / sumvar=value subgroup=phase;

run;

quit;

Hope this helps!

Dan

sarahsasuser
Quartz | Level 8

Thanks Dan. Your answer made me realize that I need help with proc transpose more than the plotting procedures. I do not get the dataset I want when I do proc transpose data=have out=want; id building; var _all_; run;

Can you suggest a better way to transpose than I have?

PGStats
Opal | Level 21

This should do the trick

proc transpose data=have out=want(rename=(col1=value)) name=phase;

by building notsorted;

var phase: ;

run;

PG

PG
sarahsasuser
Quartz | Level 8

Thanks PGStats!

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 1388 views
  • 4 likes
  • 3 in conversation