Я застрял, чтобы решить эту проблему в SAS.Вероятно, это не так сложно, но я попробовал вещи с циклами retain и re, которые не работали.
В основном каждый идентификатор имеет данные на каждую дату.На основании других переменных они могут войти в состояние снижения (шаг переменной> 0), и иногда они будут соответствовать конечному условию1.Если условие 1 = 1 выполнено, мне нужно пометить «эпизод», начинающийся с начала уменьшения.
Ниже приведен пример того, как выглядят мои данные, и мне нужен флаг столбца.Я поместил данные в порядке возрастания, чтобы мы могли понять
ID date step condition1 flag
z 1 0 .
z 2 0 .
z 3 0 .
z 4 1 . TRUE
z 5 2 . TRUE
z 6 2 . TRUE
z 7 3 . TRUE
z 8 4 . TRUE
z 10 4 . TRUE
z 11 4 1 TRUE
z 12 4 .
z 13 4 .
z 14 0 .
z 15 0 .
z 16 0 .
z 17 1 .
z 18 2 .
z 19 2 .
z 20 0 .
z 21 0 .
edit: таблица с переменной, используемой для определения уменьшения
ID date quantity step condition1 flag
z 1 90 0 .
z 2 90 0 .
z 3 100 0 .
z 4 90 1 . TRUE
z 5 80 2 . TRUE
z 6 80 2 . TRUE
z 7 50 3 . TRUE
z 8 0 4 . TRUE
z 10 0 4 . TRUE
z 11 0 4 1 TRUE
z 12 0 4 .
z 13 0 4 .
z 14 40 0 .
z 15 50 0 .
z 16 60 0 .
z 17 40 1 .
z 18 40 2 .
z 19 30 2 .
z 20 60 0 .
z 21 60 0 .
Я пытался отсортировать ее по ID инисходящая дата, которая, кажется, имеет смысл.
proc sort data= have;
by id descending date ;
run;
Вот одна из многих вещей, которые я пробовал - но она застряла;(Отредактировано)
DATA want ;
SET have;
if four=1 then do;
do until (step<1) ; flag=1; output;
end;
end;
run;
Любая помощь приветствуется.Мне, наверное, просто нужен намек в правильном направлении.Спасибо