2017-08-30 45 views
2

当读取包含零记录的数据集时,数据步骤不会运行任何put语句。在SAS中,如何在SET具有零记录时在数据步骤中至少输出一行?

data test; 
    set SASHELP.class end=eof; 
    where 1=0; 
    *output; 
    if _N_=1 then put '['; 
    put '"' name '",'; 
    if eof then put name ']'; 
    *output; 
    run; 

是否有可能强制其中一些?

之所以我这样做,这是我要创建与放陈述
(我使用SAS9.3并没有获得proc json呢。)

的JSON文件JSON文件当数据集为空时,它们是完全空的。我会需要他们至少包含一个空阵列[]

这意味着我至少需要这两条线运行:

if _N_=1 then put '['; 
if eof then put name ']'; 

对于我被迫在3个数据的步骤,一个蒙山头(_N_=1),一个与拆分此时刻记录,最后一个尾巴(eof=1)。也许有一个更短的解决方案?

+0

在SET语句之前检查EOF和相关操作。 –

回答

4

这里发生的是那一刻SAS击中setinput没有记录在读,它终止在该数据跳跃。因为set位于循环的顶部,所以它立即终止。

如果你将要顶部的两个条件,这将工作,例如:

data test; 
    if _n_=1 then put '['; 
    if eof then put ']'; 
    set SASHELP.class end=eof; 
    where 1=0; 
    *output; 
    put '"' name '",'; 
    *output; 
run; 

然后他们会操作是否有相应的数据。

我喜欢的另一种选择是循环读取数据集,但在这种情况下,它可能比有用的工作更多。

相关问题