我想获得数组子集的和,最大和/或最小值.
在SAS中,您可以说:
x = max(of v5-v10);
Run Code Online (Sandbox Code Playgroud)
其中v5到v10是变量
但你不能说:
array v[20];
i = 5;
x = max(of v[i]-v[i+5];
Run Code Online (Sandbox Code Playgroud)
它不明白v [i] -v [i + 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 ;