【发布时间】:2020-02-21 11:32:27
【问题描述】:
这是对先前问题的扩展。 (Drop observations once condition is met by multiple variables)。
我有以下数据并使用现有的已回答问题之一来解决我的数据问题,但无法得到我想要的。这是我的数据中的内容
- 当 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;
感谢任何帮助。
谢谢
【问题讨论】:
-
在组 103 中,组中的最后一个
Y行有一个后续的Fee,但后面没有Ref#-- 为什么Want组 103 在 Y 之后有费用?在第 101 组中,您在最后一行Y之后显示Want两行 - 这不符合问题条件“如果该 ID 的 下一行 是费用,我想显示后跟 REF#。 -
我的错。我将其更正为 103。但对于 101,在 flag='Y'(第 5 行和第 6 行)之后是费用,后跟 Ref1,所以我希望这些在我的数据中
标签: sas delete-row retain