Providing the data in a friendlier form and a bit more description of the desired outcome would reduce guesswork and increase motivation to post an answer to your question.
Is below what you're after?
data have;
infile datalines truncover dsd dlm=',';
input customer_id :$20. var $ (unit1-unit4) (:best32.);
datalines;
C23005A6,3,15,,39
146DX2356,4,11,,,5
B36AA323,3,10,15,20
F123G246H1,1,
;
data want;
set have;
array _units {*} unit:;
do i=1 to dim(_units);
if not missing(_units[i]) then
do;
units_purchased=_units[i];
output;
end;
end;
keep customer_id units_purchased;
run;
... View more