loops - 使用 doop 循环 sas 保留变量

标签 loops sas

是否有任何形式可以在数据步骤中使用 doop 循环保留变量?
将是这样的:

data test;
input id aper_f_201501 aper_f_201502 aper_f_201503 aper_f_201504 
aper_f_201505 aper_f_201506;
datalines;
1 0 1 2 3 5 7
2 -1 5 4 8 7 9
;
run;

%macro test;
%let date = '01Jul2015'd;

data test2;
set test(keep=do i = 1 to 3;
                 aper_f_%sysfunc(intnx(month,&date,-i,begin),yymmn6.);
              end;)
run;
%mend;
%test;

我需要迭代几个日期。
非常感谢。

最佳答案

您需要使用宏 %do循环而不是数据步骤 do循环,这在数据集选项中间无效。也不要在数据集选项的中间生成那些额外的分号。并且一定要包含一个分号来结束你的 SET 语句。

%macro test;
%local i date;
%let date = '01Jul2015'd;

data test2;
  set test(keep=
%do i = 1 %to 3;
  aper_f_%sysfunc(intnx(month,&date,-i,begin),yymmn6.)
%end;
  );
run;
%mend;
%test;

关于loops - 使用 doop 循环 sas 保留变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51988041/

相关文章:

java - 包含循环的静态方法是线程安全的吗?

sas - proc sql模式函数

sas - 如何在 SAS Enterprise Guide 中列出所有可用的用户定义宏?

python - 如何遍历字母和数字

vba - 如果甚至没有一个单元格是红色或蓝色,则删除整行

javascript - 有没有办法让javascript循环重复按下按钮?

javascript - 按降序和升序对数组进行排序

sas - 在 SAS 中使用循环重命名索引列?

sas - ODS Excel/Proc 报告 - 没有自动换行/合并单元格?

c# - 如何将任意 XML 转换(分解)为平面数据结构?