2
我想获得数组子集的总和,最大值和/或最小值。SAS阵列:如何获得数组子集的总和,最大值,最小值
在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]是一系列变量。有没有办法做到这一点会发挥什么作用?
我想获得数组子集的总和,最大值和/或最小值。SAS阵列:如何获得数组子集的总和,最大值,最小值
在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]是一系列变量。有没有办法做到这一点会发挥什么作用?
您可以在阵列中的元素:
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 ;
您可以使用:
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;
谢谢,我跟第一个一起去了;第二个不会为我工作,因为我是数据集循环的索引。我特别喜欢将vmax设置为。 – catquas