If a value of State is not in your data set the only way I know is to use a procedure that allows use of a format with all the expected values
and the Preloadfmt option such as tabulate.
data have;
input state $;
datalines;
AK
AK
AL
CA
CA
CA
;
proc format library=work;
value $expected (notsorted)
AL='AL'
AK='AK'
AZ='AZ'
CA='CA'
;
proc tabulate data=have out=want missing;
class state / preloadfmt order=data;
format state $expected.;
table state='',n
/printmiss box=state misstext='0';
run;
However the output data set will have missing instead of 0 as there is actually nothing to count. You could use a data step to replace the missing with 0 or use a format to display missing as 0 depending on what you need the 0 for. Replace if it is to be used in calculations (of course don't use 0 as a denominator unless you want errors) or format to display.
... View more