SAS proc GCHART HBAR语句中显示的数据顺序

SAS proc GCHART HBAR语句中显示的数据顺序,sas,bar-chart,gchart,Sas,Bar Chart,Gchart,我有以下内容,但我希望控制数据的显示顺序。我希望根据用户指定的顺序显示条形图,而不是按A、B、C、D、E、F的顺序显示条形图。例如,我希望能够在SAS数据集中为名为rank的变量分配一个值,该变量将控制条的堆叠顺序 我该怎么做 %let name=ex_17; %let myfont=Albany AMT; goptions reset=all; goptions reset=(global goptions); /*GOPTIONS DEVICE=png xpixels=800 ypixels

我有以下内容,但我希望控制数据的显示顺序。我希望根据用户指定的顺序显示条形图,而不是按A、B、C、D、E、F的顺序显示条形图。例如,我希望能够在SAS数据集中为名为
rank
的变量分配一个值,该变量将控制条的堆叠顺序

我该怎么做

%let name=ex_17;
%let myfont=Albany AMT;
goptions reset=all;
goptions reset=(global goptions);
/*GOPTIONS DEVICE=png xpixels=800 ypixels=400;*/
goptions gunit=pct border cback=white colors=(blacks) ctext=black
htitle=4 htext=3.0 ftitle="&myfont" ftext="&myfont";

data mileage;
      length factor $ 24;
   input factor $ level $ value;    
   datalines;
C left -38.882
C right 39.068
D right 38.99
D left -38.97
E right 38.982
E left -38.975
F left -38.973
F right 38.979
B left -38.975
B right 38.975
A right 38.977 
A left -38.973
;

/* base case: 38.975  */
data mileage;
    set mileage;
    if level="right" then value = value - 38.975;
    if level="left" then value = -1*(38.975 - value*-1);
run;

data convert;
   set mileage;
   *if level='left' then value=-value;
run;

proc format;
   picture posval low-high='000,009';
run;

data anlabels(drop=factor level value);
   length text $ 24;
   retain function 'label' when 'a' xsys ysys '2' hsys '3' size 2;

   set convert;
   midpoint=factor; subgroup=level;

   *text=left(put(value, BEST6.3));

   if level ='left' then position='>';
   else position='<'; output;
run;

title1 'Sensitivity Analysis graph';
*footnote1 justify=left ' SAS/GRAPH' move=(+0,+.5) 'a9'x move=(+0,-.5) ' Software'
          justify=right 'DRIVER ';
*title2 'by Daniel Underwood' h=3.0;
footnote1 'Estimates accurate within +/- 0.002';

*axis1 label=(justify=left 'Disutility') style=0 color=black;
axis1 label=(justify=left '') style=0 color=black;
*axis2 label=none value=(tick=3 '') minor=none major=none
      width=3 order=(-10000 to 20000 by 10000) color=black;
axis2 label=none minor=none major=none value=(tick=3 '')
      width=3 order=(-0.093 to 0.093 by 0.186) color=black;


pattern1 value=solid color=ltgray;
pattern2 value=solid color=ltgray;
/*
goption vpos=25;
goptions vsize=5in;
*/
proc gchart data=convert;
   format value BEST6.3;
   note move=(40,90) height=3 'Women' move=(+12,+0) 'Men';
   hbar factor / sumvar=value discrete nostat subgroup=level
              maxis=axis1 raxis=axis2 nolegend annotate=anlabels
              coutline=same des='' space=2;
run;

quit;
%let name=ex_17;
%让myfont=奥尔巴尼金额;
选项重置=全部;
选项重置=(全局选项);
/*GOPTIONS设备=png X像素=800像素=400*/
goptions gunit=pct边框cback=白色=(黑色)ctext=黑色
htitle=4 htext=3.0 ftitle=“&myfont”ftext=“&myfont”;
数据里程;
长度系数24美元;
输入系数$level$值;
数据线;
C左-38.882
C右39.068
D右38.99
D左-38.97
E右38.982
E左-38.975
F左-38.973
F右38.979
B左-38.975
B右38.975
A右38.977
A左-38.973
;
/*基本情况:38.975*/
数据里程;
设定里程;
如果level=“right”,则值=值-38.975;
如果level=“left”,则值=-1*(38.975-值*-1);
跑
数据转换;
设定里程;
*如果level='left',则value=-value;
跑
proc格式;
图片posval低-高='000009';
跑
数据标签(下降=因子水平值);
长度文本$24;
当“a”xsys“2”hsys“3”尺寸为2时,保留函数“标签”;
设置转换;
中点=系数;亚组=水平;
*text=左(put(value,BEST6.3));
如果level='left',则位置='>';

else position='显示值的顺序由AXIS语句(对中点或图表变量进行排序)或图例语句(对子组变量的值进行排序)上的order=选项控制


如果您需要一种方法来使用名为RANK的变量来控制子组变量的顺序,这正是如此。

显示值的顺序由轴语句(对中点或图表变量进行排序)或图例语句(对子组变量的值进行排序)上的order=选项控制


如果您想知道如何使用名为RANK的变量来控制子组变量的顺序,那就是正确的方法。

您想知道的是图表变量(因子,由轴语句控制)或子组变量(级别,由图例语句控制)的顺序吗?我想我问的是图表变量factor的顺序。我希望这些因子的顺序是基于其级别上“值”的绝对值。我希望基于自定义顺序而不是基于计算来执行此操作。您是在询问图表变量的顺序(因子,由axis语句控制)还是子组变量(级别,由图例语句控制)?我想我是在询问图表变量的顺序,因子。我希望这些因子的顺序是基于其级别上“值”的绝对值。我想根据定制订单而不是计算来完成这项工作。