这是前面一个问题的延伸。(一旦多个变量满足条件,就放弃观察)。
我有以下数据并使用现有的已回答问题之一来解决我的数据问题,但无法得到我想要的。这是我的数据中的内容
- 当 Evt_type 为 Fee 时填充 Amt1
- 当 Evt_type 为 REF1/REF2 时填充 Amt2
- 我不想在最后一个 Flag='Y' 之后显示任何观察结果
- 如果没有 Flag='Y' 那么我想要该 id 的所有观察结果(例如 id=102)
- 我想显示该 id 的下一行是否是费用,然后是在 flag='Y' 之后的 REF1/REF2(例如 id=101)但是如果没有 REF1/REF2(例如id=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;
任何帮助表示赞赏。
谢谢