对这样一个完全无知的问题抱歉,但我不知道任何SAS,只需知道一行代码的作用,所以我希望有人可以提供帮助。
我有一个变量数组的循环,以及一个基于与.Z
的比较的if子句,但是这个变量是无处定义的,所以我猜这是某种SAS语法技巧。这是循环:
ARRAY PTYPE{*} X4216 X4316 X4416 X4816 X4916 X5016;
DO I=1 TO DIM(PTYPE);
IF (PTYPE{I}<=.Z) THEN PUT &ID= PTYPE{I}=;
END;
所以在第一次迭代时,循环会检查X4216
中的值是否小于.Z
,然后......? ID
是数据集中的另一个变量,但我不知道if子句右侧发生了什么。我简要地查阅了SAS文档,以确定&符号是指宏,但我对SAS的了解仅限于了解正在发生的事情。
任何人都可以启发我吗?
答案 0 :(得分:12)
.Z是一个特殊的缺失值。在SAS中,缺失值(您可能称之为NULL值)由句点表示。还有27个其他特殊缺失值由句点后跟字母或下划线表示。缺失值是不同的,并且都被认为小于任何实际数字。 .Z是最大的&#34;。所以PTYPE{I}<=.Z
基本上测试是否缺少值。您可以改为使用MISSING(PTYPE{I})
进行相同的测试。右侧是在数组中写出缺少值的变量的名称和值,以及在宏变量ID中命名的变量的名称和值。