Fluorite | Level 6

Horizontal count of Number of variables criteria consecutively

I have a data set and I am trying to count how often this repeats consecutively across a particular volume of variables.

I have shown an example of what I have in the below dataset which has 13 variables, but i am looking at seeing how many Consecutive "Y"'s happen within a particular section. E.g. The example is from Var1-10 but this may change to look at between Var2-8 depending on requirements etc.

data have;
input (var1-var13)(\$);
cards;
Y Y N N Y Y Y N Y Y Y N N
Y Y Y Y Y Y Y Y Y Y N N N
Y N N N N Y N N Y Y Y N N
;
run;

Below you can see this count conservative Y's and output the largest volume the between var 1-10 giving the largest consecutive outcome between them in the final column. Is this possible to do?

data Want;
input (var1-var13)(\$) Total_Consecutive_Y_10vars;
cards;
Y Y N N Y Y Y N Y Y Y N N 3
Y Y Y Y Y Y Y Y Y Y N N N 10
Y N N N N Y N N N Y Y N N 1
;
run;

1 ACCEPTED SOLUTION

Accepted Solutions
Super User

Re: Horizontal count of Number of variables criteria consecutively

``````data have;
input (var1-var13)(\$);
cards;
Y Y N N Y Y Y N Y Y Y N N
Y Y Y Y Y Y Y Y Y Y N N N
Y N N N N Y N N Y Y Y N N
;
run;

data want;
set have;
length temp \$ 2000;
temp=cats(of var1-var10);

pid=prxparse('/Y+/o');
s=1;e=length(temp);want=0;
call prxnext(pid,s,e,temp,p,l);
do while(p>0);
want=max(want,l);
call prxnext(pid,s,e,temp,p,l);
end;

drop temp pid s e p l ;
run;``````
Super User

Re: Horizontal count of Number of variables criteria consecutively

``````data have;
input (var1-var13)(\$);
cards;
Y Y N N Y Y Y N Y Y Y N N
Y Y Y Y Y Y Y Y Y Y N N N
Y N N N N Y N N Y Y Y N N
;
run;

data want;
set have;
length temp \$ 2000;
temp=cats(of var1-var10);

pid=prxparse('/Y+/o');
s=1;e=length(temp);want=0;
call prxnext(pid,s,e,temp,p,l);
do while(p>0);
want=max(want,l);
call prxnext(pid,s,e,temp,p,l);
end;

drop temp pid s e p l ;
run;``````
Discussion stats