BookmarkSubscribeRSS Feed
subhani4
Obsidian | Level 7

i have the below code, which generate column O as 1 for 300 observations. But i want to get an output in such a form like o=1 for (1 to 6) obs and o=2 for (7 to 12) obs  and so on o=50 for obs (295 to 300).

 

Could any one help me regarding the same. Thanks in advance!!.

 

data temp;
do i=1 to 300 by 6;
do j=i to i+5;
o=1;
output;
end;
end;
run;

3 REPLIES 3
Patrick
Opal | Level 21

Below should work independent on how you define your loop(s).

data temp(drop=_:);
  do i=1 to 300 by 6;
    do j=i to i+5;
      _o+1;
      o=ceil(_o/6);
      output;
    end;
  end;
  stop;
run;

 

Astounding
PROC Star
Try:

data temp;
do i = 1 to 300 by 6;
o + 1;
do j = i to i+5;
output;
end;
end;
run;
FreelanceReinh
Jade | Level 19

If O is the only variable you need in dataset TEMP, this is sufficient:

data temp;
do _n_=1 to 300;
  o+(mod(_n_,6)=1);
  output;
end;
run;