1

在 SAS 中,我有几列美元值和其他几列。如果所有美元值的值均为 0,我不关心一行数据,并且我不希望这些行出现在最终数据中。作为美元值的列已经在数组 Fix_Missing 中。我在数据步骤。

因此,例如,我可以这样做:

IF Fix_Missing{1} NE 0 OR Fix_Missing{2} NE 0 OR Fix_Missing{3} NE 0;

但是,数组中的变量数量可能会发生变化,我希望代码无论其中有多少变量都可以工作。是否有捷径可寻?

4

1 回答 1

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 次)。

另一个有用的功能,可能在这里没有用,但在同一方面,是whichnwhichc(同一事物的数字/字符版本)。如果您想知道其中是否有任何一个 0:

if whichn(0,of fix_missing[*]) > 0;

它返回它找到的第一个零的位置。

于 2014-12-09T20:24:29.083 回答