这是一个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
答案 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