我想测试变量是否存在,如果不存在,请创建它。测试变量是否存在
测试变量是否存在
回答
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;
使用open()函数打开数据集后,请不要忘记关闭()你的数据集。 – cmjohns 2011-04-16 15:53:53
这里没有必要打开varnum和varnum吗?难道你不能说“数据try2; var4 = .; set try;”。在给出的例子中,它会在每次迭代时做开放和varnum,而不是很不情愿,所以它们至少应该被“if _N_ = 1 then”所保护。 – 2011-04-19 16:09:19
我需要测试var4是否存在,以便保存它的内容。拟议的数据try2; VAR4 = .;设置尝试;'会覆盖预先存在的变量中的任何数据。 – Murray 2011-06-01 05:23:09
data try2;
set try;
var4 = coalesce(var4,.);
run;
(假设VAR4是数字)
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
这是一个非常晚的答案/评论,但是这种方法适用于我,而且非常简单(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;
这与AndyBean的回答相同。 – Snorex 2016-08-30 23:24:24
如果Muray希望得到输入变量的变量不存在的信息,那么不应该这样做! – 2017-04-19 08:46:55
- 1. 函数测试变量是否存在
- 2. JMS选择器测试变量是否存在?
- 3. 如何测试变量是否存在并已初始化
- 4. JSP:测试是否存在来自pageContext.findAttribute(“”)的变量
- 5. 测试变量是否可序列化
- 6. Actionscript3:变量是否存在?
- 7. 测试单元测试是否存在保存方法
- 8. JavaScript即使在我测试变量是否存在时也会破解
- 9. JavaScript:测试未定义值的变量;测试物体是否是阵列
- 10. 如何测试一个变量是否存在于ColdFusion结构中?
- 11. 测试数据值是否存在于按POSIX日期分组的变量中
- 12. 测试两个变量是否等于一个变量在PHP的if语句
- 13. 给定两个变量,测试其他变量是否在它们之间
- 14. 测试是否存在注册表值
- 15. 测试一个目录是否存在
- 16. PHP测试是否存在操作符?
- 17. Python测试是否存在对象
- 18. 你可以测试mixin是否存在?
- 19. 测试相关模型是否存在
- 20. 测试是否已经存在
- 21. iphone - 测试对象是否存在
- 22. SQLite测试是否存在记录
- 23. 测试对象是否存在?
- 24. 测试类中是否存在字段
- 25. 要测试是否存在gmail帐户
- 26. SSI - 测试文件是否存在
- 27. 增强测试套件是否存在?
- 28. 测试文件是否存在
- 29. xslt测试是否存在属性
- 30. 使用OCUnit测试是否存在UIAlertView
您无法在DATA步骤中真正有条件地创建变量。也许你想编写代码来检查一个数据集是否有一个特定的变量,如果不使用DATA步骤来创建一个新的数据集版本来添加所需的列并给它一些合理的默认值? – 2011-04-19 16:12:03
如果输入数据不符合规格,更好的解决方案可能是“中止”。 – StasK 2015-10-23 15:34:33