2

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

我目前的代码是:

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

2 回答 2

4

使用 RETAIN 语句应该是执行此操作的最快和最简单的方法。如果您要检查的字段是数字,则输入 . 代替 ””。

data Source_Data4;
set Interm.Source_Data3;
retain a b "";
run;
于 2013-07-17T11:40:49.320 回答
2

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

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

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

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

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

这将创建一个空白数据集,其have1顺序后跟来自 的任何新变量have2。如果不需要,您可能需要在从数据字典中提取的 if 0 之前添加一个 RETAIN 语句。

于 2013-07-19T17:37:46.110 回答