2014-01-26 160 views
1

之前有类似的问题(how to prevent midpoints from extending),但不回答我的问题。SAS:防止扩展端点

我创建一个柱状图如下所示,输出到PNG文件:

ods graphics on/imagename = "histoOne" imagefmt = png reset=index border=off width=4in; 
ods select where=(_name_ ? 'Histogr'); 
proc univariate data=myData noprint; *(WHERE=(sumStake < 250)); 
    Title1; 
    var sumStake; 
    histogram sumStake/name='histogr' vminor=4 grid lgrid=34 endpoints=0 to 250 by 20 cfill=red; 
    *Omit the inset, because the stats refer to the reduced dataset; 
    INSET n (comma11.0) mean (5.2) median (5.2) std='Std Dev'(5.2) max='Max' (5.2)/pos = ne 
    header = 'Summary Statistics' cfill = ywh; 
run; 
ods graphics off; 

我想同时显示直方图和汇总统计插图。但是,数据如此偏斜,因此在X轴上显示sumStake的最大值是没有意义的。我想将X轴上限设置为250.

SAS不断扩展ENDPOINTS值。我怎样才能抑制这一点?

我不想使用(WHERE=(sumStake < 250));过滤器,因为插图中的计数,平均值,中位数和最大值将基于缩减的样本,而不是整个样本,因此无意义。

回答

1

您可能需要以某种方式更改您的数据,或以不同的方式完成图形。 SAS中的直方图不允许以这种方式对数据进行大量的分析;你必须提前做。直方图主要用于显示数据如何丢失,因此“隐藏”某些数据影响会有点违反直觉 - 我理解您为什么要这么做,但这并不完全是直方图的主要目的,因此为什么功能不是SAS在那里。

我不认为在任何情况下PROC UNIVARIATE都会给你任何控制这个的能力,所以你可能会丢失插图。您可以在PROC SGPLOT直方图中显式控制轴长度(在PROC SGPLOT中使用AXIS语句),但它们没有相同类型的插入 - 您可能会做出某些操作,但不会那么简单。它也会使超大容量的容器,并且不会重新分配那些过度容量的记录。

另一种选择,特别是如果您要单独制作插图,则需要对具有“固定”(右删失)数据的直方图(或条形图)进行SGPLOT并分别计算插值数据(在未经审查的数据)。