2016-07-22 38 views
1

我對SAS很新,有一個基本問題。上限中的條件做循環

我在寫一個包含從i = 1到n的Do-To循環的宏。我希望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

謝謝你這個完美的工作!這樣的基本解決方案。 –