Это расширение предыдущего вопроса. ( Отбросить наблюдения, когда условие выполнено несколькими переменными ).
У меня есть следующие данные, и я использовал один из существующих ответов на вопросы, чтобы решить мою проблему с данными, но не смог получить то, что я хочу. Вот что у меня в моих данных Я не хочу отображать какие-либо наблюдения после последнего флага = 'Y'
Если нет флага = 'Y', тогда я хочу, чтобы все наблюдения для этого идентификатора (например, id = 102)
Я хочу отобразить, если следующей строкой для этого идентификатора является Комиссия, за которой следует флаг REF1 / REF2 после flag = 'Y' (например, id = 101). Однако я не хочу, если нет REF1 / REF2 (egid = 103) Имею:
id Date Evt_Type Flag Amt1 Amt2
101 2/2/2019 Fee 5
101 2/3/2019 REF1 Y 5
101 2/4/2019 Fee 10
101 2/6/2019 REF2 Y 10
101 2/7/2019 Fee 4
101 2/8/2019 REF1
102 2/2/2019 Fee 25
102 2/2/2019 REF1 N 25
103 2/3/2019 Fee 10
103 2/4/2019 REF1 Y 10
103 2/5/2019 Fee 10
Хочу:
id Date Evt_Type Flag Amt1 Amt2
101 2/2/2019 Fee 5
101 2/3/2019 REF1 Y 5
101 2/4/2019 Fee 10
101 2/6/2019 REF2 Y 10
101 2/7/2019 Fee 4
101 2/8/2019 REF1
102 2/2/2019 Fee 25
102 2/2/2019 REF1 N 25
103 2/3/2019 Fee 10
103 2/4/2019 REF1 Y 10
Я пробовал следующее
data want;
_max_n_with_Y = 1e12;
do _n_ = 1 by 1 until (last.id);
set have;
by id;
if flag='Y' then _max_n_with_Y = _n_;
end;
do _n_ = 1 to _n_;
set have;
if _n_ <= _max_n_with_Y then OUTPUT;
end;
drop _:;
run;
Любой Помощь приветствуется.
Спасибо