测试变量是否存在

时间:2011-04-14 00:04:33

标签: sas exists

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

4 个答案:

答案 0 :(得分: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;

答案 1 :(得分:6)

data try2;
    set try;
    var4 = coalesce(var4,.);
run;

(假设var4是数字)

答案 2 :(得分:0)

var4分配给自己。如果变量不存在,则赋值将创建变量,如果变量存在,则将其保留在原位。

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

data try2; 
    set try; 
    var4 = var4; 
run;

请记住,在不存在的情况下以这种方式创建var4将使用默认变量属性,因此如果您需要特定格式/长度,则可能需要使用显式attrib语句等

答案 3 :(得分:-1)

这是一个非常晚的回答/评论,但这种方法适用于我,非常简单(SAS 9.4)。在下面的示例中,我使用了缺少的数字和字符变量,并为丢失的字符变量分配了一个值。

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

    data try2; 
length var4 $20;
length var5 8;
set try; 
var4 = var4; 
if var4 = ' ' then var4 = 'Not on Source File';
run;