如何在SAS中构造具有不等级宽度的直方图?

时间:2013-07-16 07:01:20

标签: sas

我试图在sas的proc univariate的帮助下在sas中创建直方图。但它给了我相同类宽度的直方图。假设我想要一个直方图,第一类间隔从1到10,第二类间隔从10到100。 我尝试使用 -

 proc univariate data=sasdata1.dataone;
 var sum;
 histogram sum/ midpoints=0 to 10 by 10 10 to 100 by 90 ;run;

但这不起作用。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

据我所知,您不能使用UNIVARIATE,而是任何SGPLOT / GPLOT /等。程序会奏效;只需将您的数据分成一个分类变量和VBAR即变量。

如果你对频率(而不是百分比)没问题,那就可以了:

data test;
set sashelp.class;
do _t = 1 to floor(ranuni(7)*20);
 age=age+floor(ranuni(7)*10);
 output;
end;
run;

proc format;
value agerange
low-12 = "Pre-Teen"
13-14 = "Early Teen"
15-18 = "Teen"
19-21 = "Young Adult"
22-high = "Adult";
quit;


ods graphics on;
ods preferences;
proc sgplot data=test;
format age agerange.;
vbar age;
run;

我相信如果您需要百分比,您需要首先PROC FREQ或TABULATE您的数据,然后是SGPLOT(或GPLOT)结果。

我找到了macro that can be used to create histograms with unequal endpoints。 代码可以在NESUG 2008 proceedings

中找到