使用值范围动态创建列

时间:2018-11-14 22:25:37

标签: sas

我无法找到上一个回答我的查询的帖子-很高兴关注链接到重复的帖子。

我想基于范围(在SAS中)动态创建列-如下所示,这不起作用

data work.test;
    set sashelp.air;
    format mb monyy.;
    do i = 1 to 10;
        mb&i = intnx('MONTH', date, -i, 'same');
    end;
run;

预期结果是名为mb1mb10的10个新列,其各自的值为date-interval

感谢您的帮助!

1 个答案:

答案 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;