One way is to create a format. Because PROC FORMAT can use a SAS data set as input, it wouldn't take a long program. One assumption I'm building in here is that your amounts only go to two decimal places. (It could still be done if there are more decimal places, but it takes a slightly more complex program.)
data groups;
length label $ 8;
do start=0 to 100000 by 100;
end = start + 99.99;
label = '> ' || left(put(start, 6.));
output;
end;
retain fmtname 'amtgroup';
run;
This gives you a SAS data set with all the categories defined, in a form that PROC FORMAT can use. Next, create the format:
proc format cntlin=groups;
run;
Finally use it. You could add this in either a DATA step or any procedure:
format amt amtgroup.;
Or you could create the character variable you originally asked for in a DATA step:
data want;
set have;
amt_grp = put(amt, amtgroup.);
run;
It's untested code so it may need to be tweaked. But it should be at least 98% of the way there.
Also note that your original code kept 100 exactly in the "> 100" category so I continued that approach here.
... View more