2

我正在尝试在 sas 中的 proc 单变量的帮助下在 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;

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

4

1 回答 1

2

据我所知,你不能用 UNIVARIATE 来做,但是任何 SGPLOT/GPLOT/etc. 程序将起作用;只需将您的数据放入一个分类变量和 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)结果。

我确实找到了一个可以用来创建具有不相等端点的直方图的宏。代码可在NESUG 2008 会议记录中找到

于 2013-07-16T13:41:45.947 回答