Вы можете использовать опцию SPARSE в операторе TABLES, чтобы PROC FREQ включал пустые ячейки. В PROC SQL вам нужно будет создать набор данных оболочки для всех возможных комбинаций.
Давайте получим несколько примеров данных хотя бы с одной пустой ячейкой:
data class;
set sashelp.class;
where age in (15 16);
run;
Мы можем использовать PROC FREQ для генерацииcount.
proc freq data=class;
tables age*sex/noprint sparse out=count1(drop=percent);
run;
Или PROC SQL:
proc sql ;
create table count2 as
select b.age,c.sex,coalesce(a.count,0) as COUNT
from (select age,sex,count(*) as COUNT
from class group by age,sex ) a
full join
((select distinct age from class) b
,(select distinct sex from class) c
)
on a.age=b.age and a.sex=c.sex
order by age,sex
;
quit;
Вы также можете использовать оператор CLASS и опции COMPLETETYPES и NWAY в PROC SUMMARY.
proc summary data=class complettypes nway;
class age sex ;
output out=count3(drop=_type_ rename=(_freq_=COUNT));
run;