我想测试一个变量是否存在,如果不存在,则创建它。
答案 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;