首先,我是新的,所以如果这不是一个好问题,我很抱歉。我搜查了但没有发现类似的东西。我不确定我的方法是否正确,因此我们将不胜感激。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