如何选择数据集中最大的变量并将其分配给sas中的宏
问候语,我需要取列中的最大值。所以我可以把它转换成一个变量,并在另一个查询中使用它。差不多如何选择数据集中最大的变量并将其分配给sas中的宏,sas,Sas,问候语,我需要取列中的最大值。所以我可以把它转换成一个变量,并在另一个查询中使用它。差不多 %let maxyear = MAX(STay_yr) 救命啊 您可以使用proc SQL并将其转换为: proc sql; select max(STay_yr) into :maxyear from some_dataset; quit; 还有另一种变体: data _null_; set have end = last; retain max_STay_yr; if S
%let maxyear = MAX(STay_yr)
救命啊 您可以使用proc SQL并将其转换为:
proc sql;
select max(STay_yr) into :maxyear
from some_dataset;
quit;
还有另一种变体:
data _null_;
set have end = last;
retain max_STay_yr;
if STay_yr > max_STay_yr then max_STay_yr = STay_yr;
if last then call symput("maxyear",max_STay_yr);
run;
变量maxyear
将具有最大值
当
&maxyear
如果所有值均为负值,则会出现问题,即不应初始化max\u STay\u yr
。此外,您可以将第一个if
语句(第4行)简化为max_STay_yr=max(max_STay_yr,STay_yr)代码>。您仍在初始化retain变量-为什么?如果真实最大值为,例如-1e9
,则数据步骤将返回错误的值<代码>保留最长停留时间代码>按预期工作。