我想创建一个SAS数据集,其中只有一个列在yymmn6中具有价值月份。格式。数据范围应来自
call symput('enddt',trim(left(intnx('month',today(),-2),yymmn6.)));
call symput('startdt',trim(left(intnx('month',today(),-14),yymmn6.)));
现在,如果我做
data months;
do date = &startdt to &enddt;
output;
end;
run;
我正在获取输出
201511
201512
201513
201514
201515
201516
.
.
201610
但是我正在寻找的结果是
201511
201512
201601
201602
201603
201604
.
.
201610
有人可以帮忙!
您可能应该以略有不同的方式进行操作。我会在一个步骤中做两个部分。
data months;
do mon_incr = -14 to -2;
date = intnx('month',today(),mon_incr);
output;
end;
format date YYMMN6.;
run;
,如果您在日期=分配中需要,可以将值放在字符串上,或者像我在这里一样将其保留为格式的日期。
您正在做的事情的问题是,您将其转换为常规号码,该号码没有记忆是在呼叫Symput步骤中的日期;所以它看到
do month = 201511 to 201610;
...
end;
并以为您的意思是"做一千五百11至200六百十个十千五十六百",而不是"做二十五十五十月至二十六十月"。