将值列表放入SAS中的几个宏变量中

时间:2016-02-23 23:10:46

标签: sas

我有一个宏变量中定义的值列表,例如

%let datelist = 20100614 20120309 20151215;

现在,我想将这些值放入相应数量的宏变量中。在这种情况下,我想将它们放入Date1,Date2,Date3。

当然,我可以手动输入:

%let Date1 = 20100614;
%let Date2 = 20120309;
%let Date3 = 20151215;

我怎样才能以动态的方式做到这一点,以便如果有25个日期或2个日期,它仍然有用?

1 个答案:

答案 0 :(得分:2)

好的,我建议一个数据步骤,因为我喜欢任何一天的宏循环。 使用COUNTW()计算所需的循环数,并使用CALL SYMPUTX创建宏变量。如果要控制宏变量的范围,则应查看函数的第三个参数。

%let datelist = 20100614 20120309 20151215;

data _null_;
word = "&datelist";
n=countw(word);
do i=1 to n;
    call symputx('date'||Put(i, 8. -l), scan(word, i));
end;
run;

%put &date1.;
%put &date2.;
%put &date3.;