2015年4月28日火曜日

IFステートメントとDOループは繋げて書ける。


タイトルの通りですが、つい最近まで繋げて書けないと思ってました。

* Sample Data ;
data DT1;
   do A=1 to 3;
      output;
   end;
run;

 A 
  1 
  2  
  3  

* IF THEN DOループ ;
data DT2;
   set DT1;

   if A=2 then do B=1 to 3;
      output;
   end;

   else output;
run;

 A 
  B  
  1 
  . 
  2  
  1 
  2  
  2 
  2  
  3 
  3  
  . 

「IF文による条件に当てはまった時だけ、DOループをまわす」って感じになります。

これ知るまでは以下みたいに書いてました。

data DT2;
   set DT1;

   if A=2 then do;
      do B=1 to 3;
         output;
      end;
   end;

   else output;
run;


SAS覚え中の人に言ったら、「知ってた」って言われたんで多分知らなかったの私だけっぽい。

0 件のコメント:

コメントを投稿