在 SAS 中,我有几列美元值和其他几列。如果所有美元值的值均为 0,我不关心一行数据,并且我不希望这些行出现在最终数据中。作为美元值的列已经在数组 Fix_Missing 中。我在数据步骤。
因此,例如,我可以这样做:
IF Fix_Missing{1} NE 0 OR Fix_Missing{2} NE 0 OR Fix_Missing{3} NE 0;
但是,数组中的变量数量可能会发生变化,我希望代码无论其中有多少变量都可以工作。是否有捷径可寻?
在大多数接受不计其数的变量列表的函数中,您可以使用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;
它返回它找到的第一个零的位置。