我有一个数据集,该数据集包含一个产品变量,一个区域变量,然后是过去10年中的每一年作为一个单独的变量,因此该数据集总共有12个变量。
我无法弄清楚如何将数据从单行显示为饼图。
数据集看起来只是为了使其更易于可视化:
Product Area year1 year2 year3
1 1 7 14 7
1 2 12 15 11
1 3 5 9 8
2 1 4 12 5
2 2 8 3 14
2 3 5 0 2
3 1 2 12 12
我的最终结果是能够输入例如产品1和区域3,然后使它生成一个饼图,该饼图显示各年份的值。不过,我目前还无法找到一种解决方法,我目前的知识和研究表明,不可能从一行中拉出来吗?
答案 0 :(得分:0)
然后使用BY Product Area;
制作一个普通的饼图,以使每条原始行具有一个图表(假设Product * Area实际上是您行的唯一ID)。我在这里使用proc gchart
。
*** DEFINE DATA --------------;
data have;
infile datalines dlm=' ';
input Product Area year1 year2 year3;
datalines;
1 1 7 14 7
1 2 12 15 11
1 3 5 9 8
2 1 4 12 5
2 2 8 3 14
2 3 5 0 2
3 1 2 12 12
;run;
*** STACK YEARS --------------;
proc sort data=work.have out=work.tmp0temptableinput;
by product area;
run;
proc sql;
create view work.tt1 as
select src.*, "values" as _eg_idcol_
from work.tmp0temptableinput as src;
quit;
proc transpose data=work.tt1
out=work.tt2
name=year;
by product area;
id _eg_idcol_;
var year:; * THIS IS GENERALISED FOR FOR THAN 3 YEARxx VARIABLES;
run;
proc datasets lib=work nolist;
modify tt2;
label values = ;
label year = ;
label valuedescription = ;
run;
*** PLOT --------------;
proc sort
data=work.tt2
out=work.tt3;
by product area;
run;
proc gchart data =work.tt3;
pie year /
sumvar=values
type=sum
nolegend
slice=outside
percent=none
value=outside
other=4
otherlabel="other"
coutline=black
noheading
;
by product area;
run; quit;