Help using Base SAS procedures

Counting across rows

Reply
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: 17,784

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;

Respected Advisor
Posts: 3,777

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;
   c0 = count(peekclong(addrlong(v[1]),dim(v)*8),put(0,rb8.));
   c1 = count(peekclong(addrlong(v[1]),dim(v)*8),put(1,rb8.));
   c2 = count(peekclong(addrlong(v[1]),dim(v)*8),put(2,rb8.));
   run;
proc print;
  
run;

3-10-2015 12-09-03 PM.png  
Respected Advisor
Posts: 3,124

Re: Counting across rows

Another one Smiley Happy,

data countc;

set have;

array v v1-v12;

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

run;

Ask a Question
Discussion stats
  • 3 replies
  • 215 views
  • 0 likes
  • 4 in conversation