目前我正在使用类似于上一个问题中使用的方法
但经过一些小修改,使其能够更轻松地处理大量变量。以下代码确保n6与dsid2引用的数据集具有相同的变量。
data n6;
set n5;
dsid=open('n5');
dsid2=open(/*empty template dataset*/);
varsn=attrn(dsid2,nvars);
i=1;
do until i = varsn;
if varnum(dsid,varname(dsid2,i))=0 then do;
varname(dsid2,i)="";
format varname(dsid2,i) varfmt(dsid2,i);
end;
i=i+1;
end;
run;
如果我理解正确,SAS将针对每个观察执行整个do循环。当我开始使用更大的数据集时,我开始经历慢的运行时间,我想知道是否有人有更好的技术?
答案 0 :(得分:2)
如果可能,最简单的方法是将常规逻辑应用于新数据集。担心以后匹配变量。完成处理后,您可以创建模板数据集的空版本,如下所示:
data empty;
set template(obs=0);
run;
然后merge empty
和您的新数据集:
data template;
input var1 var2 var3;
datalines;
7 2 2
5 5 3
7 2 7
;
data empty;
set template(obs=0);
run;
data todo;
input var1 var2;
datalines;
1 2
;
data merged;
merge todo empty;
run;
在此示例中,merged
数据集将包含缺少值的var3。