Учитывая, что вы не используете какие-либо дополнительные элементы PROC FREQ
(статистические тесты), вам может быть лучше использовать PROC TABULATE
.Это позволит вам точно определить, какие уровни вы хотите использовать в выходных данных, даже если они содержат ноль элементов, используя несколько различных методов.Вот немного хакерского решения, но оно работает (по крайней мере, в SAS 9.4):
data class;
set sashelp.class;
weight=1;
if age=15 then weight=0;
run;
proc freq data=class;
weight weight/zeros;
tables age;
run;
proc tabulate data=class;
class age;
var weight;
weight weight; *note this is WEIGHT, but does not act like weight in PROC FREQ, so we have to hack it a bit by using it as an analysis variable which is annoying;
tables age,sumwgt='Count'*weight=' '*f=2.0;
run;
Оба дают одинаковый результат.Вы также можете использовать набор CLASSDATA, который немного менее хакерский, но я не уверен, насколько хорошо он поддерживается в не-SAS:
proc sort data=class out=class_classdata(keep=age) nodupkey;
by age;
run;
proc tabulate data=class classdata=class_classdata;
class age;
freq weight; *note this is FREQ not WEIGHT;
tables age,n*f=2.0/misstext='0';
run;