如何选择数据集中最大的变量并将其分配给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
,则数据步骤将返回错误的值<代码>保留最长停留时间按预期工作。