You didn't provide any raw data, so I create a dummy data set that has an age variable (random ages) and a group variable with values of 100, 200 and 300. data have; do group= 100, 200, 300; do i= 1 to group; age = round( 100*ranuni(345),1); output; end; end; run; /* a custom format. Your example says that you want a multilabel since values >75 are also >65. Only a few procedures will actually honor multiple label type variables */ proc format library=work; value myage (multilabel) low - < 65 = '< 65 years' 65 - high = '>= 65 years' 75 - high = '>= 75 years' ; run; /* This is one of the procedures that will use the multilabel format indicated by MLF on the class statement this come close to demonstrating the output you showed. We can modify the format to round the row percentage display. If you really need () then there is a bit more work but that is for a separate thread after getting the basics*/ proc tabulate data=have; class age / mlf; format age myage.; class group; tables age, group=''*(n='' rowpctn=''); run;
... View more