在SAS中,我有几列美元值和其他几列。如果所有美元值都有0值,我不关心一行数据,我不希望最终数据中包含这些行。作为美元值的列已经在数组Fix_Missing中。我在数据步骤中。
所以,例如,我可以这样做:
IF Fix_Missing{1} NE 0 OR Fix_Missing{2} NE 0 OR Fix_Missing{3} NE 0;
但是,数组中的变量数量可能会发生变化,我希望无论代码中包含多少变量,代码都能正常工作。有一个简单的方法吗?
答案 0 :(得分:3)
在大多数接受不计数变量列表的函数中,您可以使用of array[*]
。
if sum(of fix_missing[*]) > 0
例如,假设fix_missing不能具有负值,则可以使用。您也可以将其与CATS一起使用,例如:
if cats(of fix_missing[*]) ne '000';
会起作用,你可以做这样的事情:
if cats(of fix_missing[*]) ne repeat('0',dim(fix_missing)-1);
如果你可能有未知数量的数组元素(repeat
需要一个字符并重复n + 1次)。
另一个有用的功能,可能在这里没有用,但同样有用,是whichn
和whichc
(同一事物的数字/字符版本)。如果你想知道他们中的任何一个是否有0:
if whichn(0,of fix_missing[*]) > 0;
返回它找到的第一个零的位置。