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

时间:2016-09-20 21:51:58

标签: sas lag retain

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

如果下一个年龄小于当前年龄,那么我希望将当前年龄写入新变量NeedAge。换句话说,在年龄较大的时候保持更大的年龄。

第2个人有错误的年龄,43岁,三排。这些应该是53.当AdmitNum = 5时,人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  

2 个答案:

答案 0 :(得分:0)

检查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;

答案 1 :(得分:0)

this.shared