繁体   English   中英

使用SAS变量将参数传递给SAS函数

[英]Pass argument to a SAS function using a SAS variable

我想计算SAS变量列表的最大值,该列表由数据集中存在的另一个变量确定。 那是,

| var_1 | var_2 | var_3 | var_4 | maximum till | formula used         | var_output |
|-------|-------|-------|-------|--------------|----------------------|------------|
| 3     | 6     | 9     | 12    | 4            | =max(of var_1-var_4) | 12         |
| 1     | 10    | 100   | 1000  | 2            | =max(of var_1-var_2) | 10         |
| 5     | 15    | 25    | 35    | 3            | =max(of var_1-var_3) | 25         |

感谢任何帮助。 谢谢 :)

使用do循环和滚动最大值:

data want;
    set have;
    array vars{4} var1-var4;
    do i = 1 to max_till;
        var_out = max(vars{i},var_out);
    end;
run;

FCMP解决方案。 这与user667489的解决方案相似,但已实现为功能。 仅在9.4 TS1M0 +中有效,并且可能仅在9.4中起作用。

data have;                       *some data;
input var1-var4 varmax;
datalines;
3 6 9 12 4
1 10 100 1000 2
5 15 25 35 3
;;;;
run;

proc fcmp outlib=work.funcs.func; *store functions here;
function maxof(mxarr[*],maxlim);  *returns numeric;
    do _i = 1 to maxlim;
      _max = max(mxarr[_i],_max);
    end;
    return(_max);
endsub;
run;

options cmplib=work.funcs;        *define where functions come from;    
data want;
set have;
array vars var1-var4;
varout = maxof(vars,varmax);      *use function (pass array by reference);
run;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM