2016-09-20 6 views
0

Это вопрос SAS. Следующие строки для двух человек упорядочены по возрастанию AdmitNum. Восходящий админNum основан на восходящих датах, которые опущены. Возрасты предоставляются для каждого AdmitNum. Возраст некоторых наблюдений уменьшается. Я не хочу, чтобы это произошло. Возраст должен быть равен или увеличиваться.SAS: сохранить наибольшее значение нескольких возможных значений

Если следующий возраст меньше текущего возраста, то я хочу, чтобы текущий возраст был записан в новую переменную NeedAge. Другими словами, сохраняйте больший возраст, в то время как это больший возраст.

Лицо 2 имеет неправильный возраст, 43 года, в три ряда. Это должно быть 53. Возраст человека 2 изменяется до 54, когда AdmitNum = 5 и это значение 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
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; 
+0

Сброс на FIRST.ID вместо _N_ = 1. – Tom

+0

Вам также не хватает «тогда» в вашем первом заявлении if – superfluous

+0

Да, необходимо было перезагрузить FIRST.ID. Спасибо вам обоим респондентам. – DoubleT

0

Проверьте, не превышает ли HasAge значение NeedAge, и если да, замените NeedAge на HaveAge. Затем сохраните.

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; 
Смежные вопросы