2016-07-22 7 views
1

私はSASにはとても新しいので基本的な質問があります。Do Toループの上限の条件

私は、Do-Toループを含むマクロをi = 1からnに書き出しています。私は、年が2005年よりもそれ以下であるかどうかを条件づけしたい。 n = 10未満の場合、それ以外の場合はn = 11。

年変数はすでにマクロ呼び出し内に含まれているので、これは簡単にできるはずですが、私は苦労しています。

たとえば、このコードのようなものが理想的である:

%do i= 1 %to (if &year. < 2005 then 10; else 11) 

これは、しかし、動作するようには思えません。これを簡単に実装できる別の方法がありますか?または上記のものと同様のものを使用しますか?

ありがとうございます!あなたの助けが大変ありがとう!

答えて

4

この問題では、SASが論理式を0/1の結果に変換するという利点を利用できます。

%do i= 1 %to %eval(10 + (&year >= 2005)) ; 

もっと一般的な条件としては、上限値に別の変数を設定し、%IF /%THENロジックを使用して設定してください。

%if &year < 2005 %then %let upper=10; 
%else %let upper=11; 
%do i= 1 %to &upper; 
+0

これは完璧に機能しました。そのような基本的な解決策。 –