Доброе утро.У меня есть этот набор данных:
Appendix | Change_Serial_Number| Status | Duration | Mileage | Service
20101234 0 . 60 120000 Z
20101234 1 Proposed 48 110000 Z
20101234 2 Activated 24 90000 Z
20101234 3 Proposed 60 120000 Z
20101234 4 Proposed 50 160000 B
20101234 5 Activated 36 110000 B
Каждая строка - это вариант, который может быть активирован или предложен только с первой строкой со статусом типа пустого или ранее активированной вариацией.Мне нужна эта таблица:
Appendix | Change_Serial_Number| Status | Duration | Mileage | Service |Duration_Prev| Mileage_prev |
20101234 0 . 60 120000 Z .
20101234 1 Proposed 48 110000 Z 60 120000
20101234 2 Activated 24 90000 Z 60 120000
20101234 3 Proposed 60 120000 Z 24 90000
20101234 4 Proposed 50 160000 B 24 90000
20101234 5 Activated 36 110000 B 24 90000
Мне нужно сравнивать продолжительность, пробег и обслуживание каждого варианта с ранее активированным или с начальным условием, только если не активирован вариант.
Я попытался с помощью функции задержки получить данные из предыдущей строки, но мне нужно извлечь данные из 3 полей и извлечь данные только из последнего активированного варианта или, если нет, из начального условия.
Я использовал этот код:
proc sort data=db_rdg;
by Appendix Change_Serial_Number descending Change_Serial_Number;
run;
data db_rdg2;
set db_rdg;
by Appendix;
Duration_prev=lag(Duration);
if first. Appendix then Durata_prev =.;
run;
С помощью этого кода я могу получать данные только из предыдущей строки (не из ранее активной строки или из первого условия) и только для переменной продолжительности(не одновременно по продолжительности, пробегу и обслуживанию).
Надеюсь, я был достаточно ясен:)
Спасибо за вашу помощь!