SAS:保留几个可能值中的最大值

SAS: retain the largest value of several possible values

这是一个 SAS 问题。以下两个人的行按 AdmitNum 升序排列。升序 AdmitNum 基于升序日期,省略。为每个 AdmitNum 提供了年龄。一些观察之间的年龄减少。我不想发生这种情况。年龄必须相等或增加。

如果下一个年龄小于当前年龄,那么我希望将当前年龄写入新变量NeedAge。换句话说,保留较大的年龄,而它是较大的年龄。

第 2 个人的年龄错误,在三行中是 43 岁。这些应该是 53。当 AdmitNum=5 时,Person 2 的年龄变为 54,应该保留这个值 54。

经过多次尝试,我只取得了部分成功。有人可以建议一种制作 NeedAge 的方法,如下所示吗?谢谢

ID    AdmitNum  HaveAge  NeedAge               
1       1        51          51    
1       2        48          51  
1       3        51          51  
1       4        49          51  
2       1        53          53  
2       2        43          53  
2       3        43          53  
2       4        43          53  
2       5        54          54  

检查HaveAge是否超过NeedAge,如果是,用HaveAge替换NeedAge。然后保留。

data have;
    input ID AdmitNum HaveAge;
    datalines;          
        1 1 51
        1 2 48
        1 3 51
        1 4 49 
        2 1 53
        2 2 43
        2 3 43
        2 4 43
        2 5 54
    ;
run;

data want;
    set have;
    by ID;
    if HaveAge > NeedAge then NeedAge = HaveAge;
    retain NeedAge;
run;
data have;
input ID AdmitNum HaveAge;
datalines;          
    1 1 51
    1 2 48
    1 3 51
    1 4 49 
    2 1 53
    2 2 43
    2 3 43
    2 4 43
    2 5 54
   ;
run;

data want;
set have;
by ID;
if _n_ = 1 NeedAge = HaveAge;
if HaveAge > NeedAge then NeedAge = HaveAge;
retain NeedAge;
run;