在我定義數組的數據步驟中,我可以使用求和函數,但計數函數不起作用。如何計算數組中不爲零的值的數量?SAS - 陣列內的計數
SUM_ARRAY = sum(of A1-A20); - Works
COUNT_ARRAY = count(of A1-A20); Yields the following error: "The COUNT function call has too many arguments"
在我定義數組的數據步驟中,我可以使用求和函數,但計數函數不起作用。如何計算數組中不爲零的值的數量?SAS - 陣列內的計數
SUM_ARRAY = sum(of A1-A20); - Works
COUNT_ARRAY = count(of A1-A20); Yields the following error: "The COUNT function call has too many arguments"
而不是COUNT的正確函數是N,DIM或HBOUND。 不幸的是,沒有人會計算具體的值,只能排除缺少的值。
循環遍歷結果是計算非0的一種方法。
Array _a(*) a1-a20;
Count0 = 0;
Do I = 1 to dim(_a);
If _a (I) ne 0 then count0 = count0 + 1;
End;
COUNT
如果您的數據符合要求,可以強制執行此操作。我不確定它在時間上或結構上比循環操作更好,但它至少是一個有趣的解決方案。
基本上我們用;
分隔數據,包括用分隔符開始和結束數據,然後統計;0;
的數量,然後從總數中減去。
data _null_;
call streaminit(7);
array a[20];
do _i = 1 to 20;
a[_i] = max(0,rand('Uniform')-0.3);
end;
put a[*]=;
nonzero = dim(a) - count(';'||catx(';',of a[*])||';',';0;');
put nonzero=;
run;