New Contributor
Posts: 4

# Counting across rows

Hi there,

I have 12 numeric variables (values of either 0,1,2) an am hoping to create a single variable which counts the number of "1"s or "2"s across rows (I have over 20 000 obs); e.g. how many 2s or 1s are in each row/record (rows can have both 1 or 2 - so wont be able to divide out) - I know there must be a simple way of doing this but haven't had much luck yet - any help would be greatly appreciated? Thanks so much!

Super User
Posts: 23,700

## Re: Counting across rows

Have you tried an array and do loop or are you looking for something different?

array vars(12) var1-var12;

var_count=0;

do i=1 to dim(vars);

if vars(i) in (1,2) then var_count+1;

end;

Posts: 3,852

## Re: Counting across rows

Peek?

data _012;
array v[12];
do id = 1 to 10;

do _n_ = 1 to dim(v);
v[_n_]=rantbl(123,.3,.3)-1;

end;

output;

end;

run;
proc print;

run;
data count;
retain id;
array v[12];
set _012;
run;
proc print;

run;

Posts: 3,167

## Re: Counting across rows

Another one ,

data countc;

set have;

array v v1-v12;

ctof12=countc(cats(of v(*)),'12');

run;

Discussion stats
• 3 replies
• 299 views
• 0 likes
• 4 in conversation