我正在使用SAS
。我有更多datesets
,每月一个,我必须在datasets
的同一步骤中考虑更多macro
(月)来计算变化,等等,因为例如{{1}我在january(月x)的数据集中有一个值,在二月的数据集中有一个值(月x + 1)。
VAR1
以这种方式命名:datasets
(例如2015年12月的年月= 201512)
所以我必须创建一个名为xxxxxx_yearmonth
的{{1}},可以滞后几个月,以便回忆起来。
我想回忆一下macro variable
个月的数据集,并执行:yearmonth
。但是有一个问题,因为如果是2015年1月macro variable
和yearmonth - 1 ... yearmonth - 2 ... yearmonth - n
而不是yearmonth=201501
。事实是,yearmonth-1=201500
并不像日期那样认识到年份,而是将其视为一个简单的数字。
如何解决此问题?
提前致谢。
答案 0 :(得分:0)
将字符串转换为日期并使用INTNX()
函数。
%let current=201501;
%let prev=%sysfunc(intnx(month,%sysfunc(inputn(¤t.01,yymmdd8)),-1),yymmn6);
%put &=prev;
答案 1 :(得分:0)
尝试将intnx
与sysfunc
结合使用,格式为yymmn6。
类似的东西:
%let yearmonth1 = %sysfunc(intnx(month,%sysfunc(inputn(&yearmonth,yymmn6.)),-1),yymmn6.);
或者更简单的datastep版本(也更好地循环它):
data _null_;
do i = 1 to 6;
monthid = put(intnx('month',input("&yearmonth",yymmn6.),-i),yymmn6.);
call symput(cats('yearmonth',i),monthid);
end;
run;