Please make it possible to tell the difference between a variable name and the actual values. I am guessing here.
And which output you want.
You likely want the option of PRELOADFMT which will use a format definition to have the values not present in the data available.
Very few procedures will accept the option but Procs Means/ Summary, Tabulate and Report will. Here are examples with Report and Means;
proc format library=work;
value $ldh
"LDH Normal" ="LDH Normal"
"LDH > 1X Normal" ="LDH > 1X Normal"
"LDH > 2X Normal" ="LDH > 2X Normal"
"LDH > 3X Normal" ="LDH > 3X Normal"
;
run;
data example;
length ldh $17;
ldh="LDH Normal" ; count=56; output;
ldh="LDH > 1X Normal" ; count=25; output;
;
options missing='0';
proc report data=example completerows;
columns ldh count;
define ldh /preloadfmt group ;
format ldh $ldh.;
run;
proc means data=example sum completetypes;
class ldh / preloadfmt ;
format ldh $ldh.;
var count;
run;
One headache is that controlling the order of the output if the variable is character as the sort orders are not likely to be what you want. If your "LDH" variable is numeric then order=data may get the order you want.
Note that every proc that uses PRELOADFMT requires at least one other option such as order=data, completerows, completetypes, and such and the interactions can be vexing at times.
Since Proc Means/ Summary will create output sets you might be ahead of the game to use them to request the count as otherwise depending on the procedure getting a 0 for missing values may take other steps.