我试图在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;
但这不起作用。这样做的正确方法是什么?
答案 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
中找到