Data visualization with SAS programming

Charting time data

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 102
Accepted Solution

Charting time data

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.


Accepted Solutions
Solution
‎03-26-2013 06:08 PM
SAS Super FREQ
Posts: 864

Re: Charting time data

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


All Replies
Solution
‎03-26-2013 06:08 PM
SAS Super FREQ
Posts: 864

Re: Charting time data

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

Frequent Contributor
Posts: 102

Re: Charting time data

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?

Respected Advisor
Posts: 4,606

Re: Charting time data

This should do the trick

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

by building notsorted;

var phase: ;

run;

PG

PG
Frequent Contributor
Posts: 102

Re: Charting time data

Thanks PGStats!

Post a Question
Discussion Stats
  • 4 replies
  • 287 views
  • 4 likes
  • 3 in conversation