对这样一个完全无知的问题抱歉,但我不知道任何SAS,只需知道一行代码的作用,所以我希望有人可以提供帮助.我有一个变量数组的循环,以及一个基于比较的if子句.Z,但这个变量是无处定义的,所以我猜这是某种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;
Run Code Online (Sandbox Code Playgroud)
所以在第一次迭代时,循环会检查值X4216是否小于.Z,然后......?ID是数据集中的另一个变量,但我不知道在if子句的右侧发生了什么.我简要地查阅了SAS文档,以确定&符号是指宏,但我对SAS的了解仅限于了解正在发生的事情.
任何人都可以开导我吗?
Tom*_*Tom 13
.Z是一个特殊的缺失值.在SAS中,缺失值(您可能称之为NULL值)由句点表示.还有27个其他特殊缺失值由句点后跟字母或下划线表示.缺失值是不同的,并且都被认为小于任何实际数字..Z是"最大的".所以PTYPE{I}<=.Z基本上测试是否缺少值.您可以改为使用MISSING(PTYPE{I})相同的测试.右侧是在数组中写出具有缺失值的变量的名称和值,以及在宏变量ID中命名的变量的名称和值.