从具有不同列的多个数据集创建模板数据集

时间:2013-07-17 08:56:18

标签: sas

目前,我有几套业务单位数据,我想将其放入标准模板格式。某些业务单位数据包含其他人没有的列。我想检查是否存在某些列,然后如果不存在则创建它们。我知道前面已经讨论过实现类似功能的技术herehere。但是,我想知道是否存在更好的方法。

我目前的代码是:

data Source_Data4;
set Interm.Source_Data3;
if 0 then do;
    a="";
    b=""; 
end;
run;

2 个答案:

答案 0 :(得分:4)

使用RETAIN语句应该是最快速,最简单的方法。如果您要检查的字段是数字,则输入。而不是“”。

data Source_Data4;
set Interm.Source_Data3;
retain a b "";
run;

答案 1 :(得分:2)

如果您有多个具有不同列的数据集要使用模板,那么执行此操作的最佳方法是:

data want;
if 0 then set template;
set have2;
run;

这比一堆retain / length语句更容易编码。它完成了与保留解决方案相同的结果(它定义了PDV),但有一个例外;它将根据template定义变量的长度和格式(而retain不会影响长度或格式)。根据您的使用情况,这可能是可取的,也可能不是。在组合多个数据集时非常有用,因为它提供了可以测试长度/格式差异的单个点;一旦发生这一步骤,您就可以确信您的各种数据集在可变长度/格式上都是相同的。

创建此数据集可以通过多种方式完成。一个简单的方法是:

data template;
if 0 then set have;
if 0 then set have2;
stop;
run;

这将创建一个空白数据集,其中包含have1个订单,后跟have2中的所有新变量。如果不需要,您可能希望在从数据字典中提取的if 0之前添加RETAIN语句。