【发布时间】:2019-05-07 21:19:46
【问题描述】:
我正在尝试通过宏循环的迭代来创建单个数据集。我发现 proc append 不需要定义的 BASE 才能使用,所以方法应该是可行的。但是,我遇到了变量名称长度的问题。
我创建了一个简单、可重现的示例来演示我的问题。当然,这不是创建我的最终 want 数据集的最有效方法,但这个过程模拟了我的代码中的工作流程。
proc sql;
select name from sashelp.class;
select name
into :name_1 - :name_&sqlobs
from sashelp.class;
quit;
%macro forward_loop;
%do i = 1 %to 10;
proc sql;
create table temp as
select
"&&name_&i" as name,
age
from sashelp.class
quit;
proc append base=want data=temp;
run;
%end;
%mend;
%forward_loop;
注意:将 WORK.TEMP 附加到 WORK.WANT。
警告:变量名称在 BASE 和 DATA 文件(BASE 6 DATA 7)上的长度不同。
错误:由于上面列出的异常,未完成附加。使用 FORCE 选项附加这些文件。
注意:添加了 0 个观察结果。
我相信我可以在 proc sql 步骤中通过简单地指定 name 填充到某个标准长度来解决这个问题。但是,我无法弄清楚如何做到这一点。
这是正确的方法吗?或者有没有办法在 BASE 中没有任何数据行的情况下创建 BASE 结构?
【问题讨论】:
标签: sas