如何使用proc sql根据另一个变量的特定值删除特定ID的所有行?

时间:2019-07-02 12:22:42

标签: sql sas

例如,如果某个ID在任何观察结果中都具有Op = 1,我想删除该ID的所有行。

我想将以下数据集(Data1)更改为Data2。

示例:

Example

我仅使用SAS EG版本执行任务,因此无法自己完成此过程。预先非常感谢。

1 个答案:

答案 0 :(得分:0)

有两个解决方案,首先使用数据步骤。这是通过将表与自身合并而实现的,但是第二次仅与不需要的行合并。仅保留那些不在子集中的行ID。

data data2;
  merge data1 data1(keep=id op where=(_op=1) rename=(op=_op) in=i);
  by id;
  if ^i;
  drop _op;
run;

另一种方法是使用sql创建一个新的数据集,该数据集的ID不在生成与方法一类似的子集中。

proc sql;
  create table data2 as select * from data1 where id not in(select id from data1 where op=1);
quit;