在BOXPLOTPARAM(SAS GTL)中分离数据

时间:2017-10-23 14:56:13

标签: sas sas-gtl

我已将我想要绘制的数据汇总为方框和胡须图。我添加了一个"异常值"指向某些类。我想要2个单独的图,一个有异常值,一个没有。

以下是我所拥有的:

data test;
input _stat_ $ _label_ $ col1 has_outlier;
datalines;
Max    A 2.1837546442 0
Mean   A 0            0
Median A 0.0101415946 0
Min    A -2.698021137 0
Q1     A -0.656874482 0
Q3     A 0.6635898047 0
Max    B 2.2346071965 1
Mean   B 0            1
Median B -0.025621533 1
Min    B -2.380132327 1
Q1     B -0.658781626 1
Q3     B 0.7248025307 1
Outlier B -2.120639115 1
Max    C 1.9904289904 0
Mean   C 0            0
Median C 0.0164299847 0
Min    C -2.032578831 0
Q1     C -0.454702942 0
Q3     C 0.7259160175 0
;



proc template;
  define statgraph boxplotparm1;
    begingraph;
      layout datapanel classvars=(has_outlier) / columns=2 rowdatarange=union;
          layout prototype / cycleattrs=true;
           boxplotparm x=_label_ y=col1 stat=_stat_ /
             datalabel=datalabel spread=true  dataskin=sheen outlierattrs=(color=red symbol=Asterisk);     
          endlayout;
      endlayout;
    endgraph;
  end;
run;

/* Generate the plot. */
proc sgrender data=test template=boxplotparm1;
run;

制作: enter image description here

我想从图表中删除没有箱形图的类。所以" No Outlier"小组应该只显示" A"和" C"和#34;异常值"小组应该只显示" B"。

1 个答案:

答案 0 :(得分:1)

我认为你会得到你想要的COLUMNDATARANGE=UNION来控制X轴。 UNIONALL是默认值,并指示它在所有图表中具有一致的X轴; UNION指示不要。

如果你走这条路线,你可能没有一张好看的图表,因为我怀疑宽度是正确的将会很有挑战性。

proc template;
  define statgraph boxplotparm1;
    begingraph;
      layout datapanel classvars=(has_outlier) / columns=2 rowdatarange=union columndatarange=union;
          layout prototype / cycleattrs=true;
           boxplotparm x=_label_ y=col1 stat=_stat_ /
             datalabel=datalabel spread=true  
             dataskin=sheen outlierattrs=(color=red symbol=Asterisk)
             ;     
          endlayout;
      endlayout;
    endgraph;
  end;
run;

Image of desired graph