2

我想获得数组子集的总和、最大值和/或最小值。

在 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] 是一个变量范围。有没有其他方法可以做到这一点?

4

2 回答 2

5

您可以遍历数组的元素:

数据最大值;
  数组 v{20} ;
  我 = 5 ;
  最大 = 。;
  做 n = i 到 i+5 ;
    vmax = max(vmax,v{n}) ;
  结尾 ;
跑 ;

或者创建一个只包含您需要的元素的新数组:

%让我 = 5 ;
数据最大值;
  数组 v{*} v&I-v%EVAL(&I+5) ;
  vmax = max(of v{*}) ;
跑 ;
于 2013-06-19T10:20:03.533 回答
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;
于 2013-06-19T01:56:51.693 回答