测试变量是否存在

Mur*_*ray 5 exists sas

我想测试变量是否存在,如果不存在,则创建它.

Mur*_*ray 8

open()&varnum()功能可被使用.非零输出varnum()表示变量存在.

data try; 
    input var1 var2 var3;
    datalines;
    7 2 2
    5 5 3
    7 2 7
; 

data try2; 
    set try;
    if _n_ = 1 then do; 
        dsid=open('try'); 
        if varnum(dsid,'var4') = 0 then var4 = .; 
        rc=close(dsid);
    end;
    drop rc dsid;    
run;
Run Code Online (Sandbox Code Playgroud)

  • 使用`open()`函数打开数据集后,不要忘记`close()`数据集. (2认同)
  • 这里不需要打开和varnum吗?你不能只说"data try2; var4 =.; set try;".在给出的示例中,它将在每次迭代时执行open和varnum,相当无效,因此它们至少应该被"if _N_ = 1 then"保护. (2认同)
  • 我需要测试var4是否存在,以便在保存时保留其内容.建议的`数据try2; VAR4 = .; 设置try;`将覆盖预先存在的变量中的任何数据. (2认同)

小智 6

data try2;
    set try;
    var4 = coalesce(var4,.);
run;
Run Code Online (Sandbox Code Playgroud)

(假设var4是数字)