gpt4 book ai didi

sas - 在宏 SAS 中使用 max 函数

转载 作者:行者123 更新时间:2023-12-01 07:44:52 25 4
gpt4 key购买 nike

我正在尝试在宏中查找四个变量的最大值,Value_A Value_B Value_C Value_D。我以为我可以执行 %sysfunc(max(value_&i.)) 但这不起作用。我的完整代码是:

%let i = (A B C D);
%macro maxvalue;

data want;
set have;
%do j = 1 %to %sysfunc(countw(&list.));
%let i = %scan(&list.,&j.);
value_&i.= Sale_&i. - int_&i.
Max_Value = %sysfunc(max(value_&i.));
%end;
run;
%mend maxvalue;
%maxvalue;

我应该指定我只需要每个观察的四个变量中的最大值。感谢您的帮助!

最佳答案

除了拼写错误 - %let i=(A B C D); 应该是 %let list=(A B C D) - 你 a) 让它变得过于复杂,并且 b )混淆宏语法和数据步语法。虽然您可以使用宏来完成此操作,但没有必要。

鉴于所讨论的变量都以类似的方式加上前缀(尽管如果它们带有数字后缀会更好,例如 Value1、Value2),使用数组和适当的函数要容易得多:

data want ;  set have ;  array sale{*} Sale_A Sale_B Sale_C Sale_D ;  array int{*} Int_A Int_B Int_C Int_D ;  array value{*} Value_A Value_B Value_C Value_D ;  /* Iterate over array */  do i = 1 to dim(sale) ;    value{i} = sum(sale{i},-int{i}) ;  end ;  max_value = max(of value{*}) ;run ;    

关于sas - 在宏 SAS 中使用 max 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38514466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com