首先,我是新的,所以如果這不是一個好問題,我很抱歉。我搜查了但沒有發現類似的東西。我不確定我的方法是否正確,因此我們將不勝感激。SAS通過宏變量列表循環
我正在爲一所有學期的學校提供數據集,例如2017SP是2017年春季,2017SU是2017年夏季等。
我有以下程序,我在上面設置了一個宏變量,然後用它從各種庫和數據集中抽出這個術語。請注意,我有幾個數據步驟,只需要運行整個程序5次以上。
%let STC_TERM=2017SU;
Data Step; set (library that has data on all terms); if STC_TERM = "&STC_TERM"; *other things I want to do* run;
我在我的節目其他幾個類似的數據的步驟,最後給我我想要的輸出數據。
現在我需要創建一個數據集,每個學期只需附加五個學期的數據。
而不是運行我的代碼5次,只是改變「%let STC_TERM = 2017SU;」到 「%let STC_TERM = 2016SU;」對於我想要的每一年,我都希望能夠提供5個術語的列表,並通過5個術語中的每一個讓SAS循環,並將結果附加在一起。
五個條款是(2017年,2016年,2015年,2014年,2013年)。
有沒有辦法將這個清單給我的程序,讓它在2017SU首先執行所有的數據步驟,然後在下一個學期等等,並將結果附加在一起?
我不能只在數據步驟中放入所有感興趣的術語,因爲一些術語在它們之間有重複的數據,需要單獨處理。試圖把所有的術語放在數據步驟之前並不適用於我,所以我想通過每個學期單獨運行整個程序來分開它們。
可能的複製https://stackoverflow.com/questions/18667379/simple-iteration-through-array-with-proc-sql-in-sas ) – DomPazz
重複的https://stackoverflow.com/questions/18667379/simple-iteration-through-array-with-proc-sql-in-sas/18667497#18667497。那個問題是要求PROC SQL,但是數據步驟可以很容易地被替換。 – DomPazz
對不起,我不明白這是同一個問題。他只有一個程序。我有幾個數據步驟(共12個),其中一些使用宏變量。我不希望對每一個數據步驟進行更改。應該有一種方法來運行整個程序,使用頂部宏變量指定的不同學期。 – elfrozo