SAS如何设置数据步骤以仅附加现有数据?

时间:2019-04-04 20:13:31

标签: sas

我正在编写宏函数。如果满足某些条件,将创建一些表。我想将所有这些表附加到最后。有没有办法让该函数仅附加现有表?

我能想到的方法之一是让系统检查表是否存在,如果存在,则一个接一个地追加。 例如:

    %if %sysfunc(exist(table1)) %then %do; 
           data final_table; set table1; run;
    %end;
    %if %sysfunc(exist(table2)) %then %do; 
           data final_table; set table2; run;
    etc......

这将使代码真正冗长且无效。有什么办法解决这个问题?谢谢

3 个答案:

答案 0 :(得分:2)

不要等到最后将它们结合起来。随时随地进行构建。

您可以使用PROC APPEND。如果BASE表不存在,它将创建它。否则,将附加观察结果。

proc append force base=final_table data=table&i;
run;

请注意,这将要求数据集具有相同的列。

答案 1 :(得分:2)

为表使用命名约定,并将它们存储在单个位置。 这就像使用一致的前缀一样简单,例如_TEMP_Table1,_temp_table2等。

然后在添加它们时,只需使用冒号运算符:

data want;
  set _temp_table: ;
run;

仅包含以该前缀开头的表。

这也使以后将它们全部删除以清理您的过程变得更容易。

答案 2 :(得分:-1)

我想出了一个解决方案。如果有人想知道,我会在这里张贴。 我可以在运行任何这些表之前创建空表。当我附加所有中间表时,它们不存在,只会附加空表。

yyyyMMdd-HHmm_