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