我无法找到上一个回答我的查询的帖子-很高兴关注链接到重复的帖子。
我想基于范围(在SAS中)动态创建列-如下所示,这不起作用
data work.test;
set sashelp.air;
format mb monyy.;
do i = 1 to 10;
mb&i = intnx('MONTH', date, -i, 'same');
end;
run;
预期结果是名为mb1
至mb10
的10个新列,其各自的值为date-interval
。
感谢您的帮助!
答案 0 :(得分:2)
您正在参与不需要的宏。注意,我创建了数组MB,并用数组引用替换了MB&I。我没有SASHELP.AIR,所以只用了today(),但您明白了。
data work.test;
*set sashelp.air;;
array mb[10];
date = today();
do i = 1 to dim(mb);
mb[i] = intnx('MONTH', date, -i, 'same');
end;
format mb: monyy.;
run;