I've got some data in the form:
file_date | segment |grade | volume
30Jun2017 | 1 | A0 | 1000
31Jul2017 | 1 | A0 | 542
31Aug2017 | 1 | A0 | 4863
.
.
I want to transpose this so that it's in the form:
grade | segment | 30Jun2017 | 31Jul2017 | 31Aug2017 | etc.
A0 | 1 | 1000 | 542 | 4863 |
I've tried this using
proc transpose data=data1 out=data1_trans;
by grade NOTSORTED;
id file_date;
var volume;
run;
I was going to do another proc transpose with the segment as the var and then merge them, but the output of this results in a bunch of blank spaces like:
grade | _NAME_ | 30Jun2017| 31Jul2017 |
A0 | volume | 1000 | . |
A1 | volume | 56 | . |
A2 | volume | 884 | . |
A0 | volume | . | 542 |
A1 | volume | . | 353 |
A2 | volume | . | 45 |
Is there anyway to get rid of those cells that are blank and have all of the data next to each other?
First, sort your data by grade and segment, then run proc transpose
by grade segment
. You need to include segment
as a by variable for it to be included in your output.
proc sort data=data1;
by grade segment;
run;
proc transpose data=data1 out=data1_trans;
by grade segment;
id file_date;
var volume;
run;