SAS:防止ENDPOINTS扩展

时间:2014-01-26 21:02:28

标签: sas

之前有一个类似的问题(how to prevent midpoints from extending),但没有回答我的问题。

我正在创建如下的直方图并将其输出到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 个答案:

答案 0 :(得分:1)

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

我认为PROC UNIVARIATE无论如何都没有给你任何控制权的能力,所以你可能会失去插图。您可以在PROC SGPLOT直方图中明确控制轴长度(在AXIS中使用PROC SGPLOT语句),但它们没有相同类型的插图 - 您可以制作一些东西,但是不是那么简单。它仍然会制作超大的分档,并且不会重新分配那些过度分箱的记录。

另一种选择,特别是如果你单独制作插图,将使用你已经“修复”的数据(右删失)进行SGPLOT直方图(或条形图)并计算插入数据单独(在未经审查的数据上)。