【问题标题】:Create columns with an array in a loop in sas在 sas 中循环创建带有数组的列
【发布时间】:2022-11-22 23:19:32
【问题描述】:

我想通过循环为 work.komposit_prod 创建五个目标年份列。 我得到以下代码:

proc sql noprint;
select distinct year into :targetyears1 - FROM work.QE_Target
ORDER by year;
quit;


proc sql noprint;
  select distinct Count(Jahr) into :Count_targetyears 
  FROM 
      (select distinct year FROM work.QE_Target);
quit;

%let max = &Count_targetyears;

data test ;
set work.komposit_prod;
Do i=1 to &max;
"ZZ_&&targetyears&i"n = .;

end;
run;

无法解析变量“ZZ_&&targetyears&i”n 引用。 有人可以给我提示吗? 谢谢你。

亲切的问候, 本

【问题讨论】:

  • 在你的第二个 proc sql 语句中,你有 Jahr 而不是 year 作为变量的名称。
  • 我的错,当然必须是年份。但还是不行

标签: loops sas


【解决方案1】:

您的 do 循环引用数据步骤变量而不是宏变量:

Do i=1 to &max;
    "ZZ_&&targetyears&i"n = .;
end;

您需要将其转换为宏才能运行它:

%macro target_years;
    data test ;
        set work.komposit_prod;
        %do i=1 to &max;
            "ZZ_&&targetyears&i"n = .;
        %end;
    run;
%mend;
%target_years

【讨论】:

  • 非常感谢 Stu Sztukowski,这很好用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
相关资源
最近更新 更多