【发布时间】:2020-02-26 01:56:16
【问题描述】:
对于以下数据,我尝试根据这些条件过滤每个组 ID 的行:
- 在每行带有
type='B' and value='Y'之后执行以下操作- 删除行,直到下一行具有
type='F' and value='Y'。
- 删除行,直到下一行具有
- 如果没有 B='Y,则保留所有这些(例如 id=002)
我们可以创建我想要的数据集中显示的标志变量吗?这样我就可以过滤 Flag='Y'?
有
ID Type Date Value
001 F 1/2/2018 Y
001 B 1/3/2018
001 B 1/4/2018 Y
001 B 1/5/2018
001 B 1/6/2018
001 F 1/6/2018 Y
001 B 1/6/2018
001 B 1/7/2018
001 B 1/8/2018 Y
001 B 1/8/2018
001 B 1/9/2018
002 F 1/2/2018 Y
002 B 1/3/2018
002 B 1/4/2018
想要
ID Type Date Value Flag
001 F 1/2/2018 Y Y
001 B 1/3/2018 Y
001 B 1/4/2018 Y Y
001 B 1/5/2018
001 B 1/6/2018
001 F 1/6/2018 Y Y
001 B 1/6/2018 Y
001 B 1/7/2018 Y
001 B 1/8/2018 Y Y
001 B 1/8/2018
001 B 1/9/2018
002 F 1/2/2018 Y Y
002 B 1/3/2018 Y
002 B 1/4/2018 Y
我尝试了以下操作
data F;
set have;
where Type='F';run;
data B;
set have;
where Type='B';run;
proc sql;
create table all as select
a.* from B as b
inner join F as f
on a.id=b.id
and b.date >= a.date;
quit;
这包括我的数据集中的所有行。非常感谢任何帮助。
【问题讨论】:
-
消除或保留行的标准是什么?
标签: sas delete-row retain proc-sql