我想获得数组子集的和,最大和/或最小值。
在SAS中,您可以说:
x = max(of v5-v10);
其中v5到v10是变量
但你不能说:
array v[20];
i = 5;
x = max(of v[i]-v[i+5];
不明白v [i] -v [i + 5]是一系列变量。还有其他方法可以做到吗?
答案 0 :(得分:5)
您可以迭代数组的元素:
data max ; array v{20} ; i = 5 ; vmax = . ; do n = i to i+5 ; vmax = max(vmax,v{n}) ; end ; run ;
或创建一个新数组,其中只包含您需要的元素:
%LET I = 5 ; data max ; array v{*} v&I-v%EVAL(&I+5) ; vmax = max(of v{*}) ; run ;
答案 1 :(得分:0)
您可以使用:
array a(*) _numeric_;
do i=1 to dim(a);
if a(i) = . then a(i) = 0; //this replaces mssing for 0´s but you can implement any logic here
end;
drop i;