The code can be improved, but it will only assign ALL of the observations a CAPACITY_LABEL value of 4 if the CAPACITY variable is always less than 25. Note that includes any observations where the value of CAPACITY is missing because SAS considers all of the 28 possible missing values as less than actual number.
You should add ELSE's to your string of IF/THEN so it doesn't have to keep testing once it finds a match.
You should make sure the tests aren't tautologies. There is no number that is both less than 50 and greater than 79.
Make sure to include the boundary values into one of the two adjacent categories.
data in_capacity2;
set in_capacity;
if Capacity > 80 then Capacity_label=1;
else if 50 < Capacity <= 80 then Capacity_label=2;
else if 25 < Capacity <= 50 then Capacity_label=3;
else if missing(Capacity) then Capacity_label=.;
else Capacity_label=4;
run;