在sas中有条件地删除

时间:2014-01-12 19:33:35

标签: sas

我有一个数据集,它看起来如下:

1. individual  time  woman 
2.  1          2008    1
3.  1          2009    1
4.  1          2010    1
5.  2          2008    0
6.  2          2009    0
7.  2          2010    1
8   2          2010    0
9.  3          2008    0
10. 3          2009    0
11. 3          2010    0

问题在于,2010年的一些观察结果显示两次,男性和女性都是如此。这是例如观察7和8的情况。我想知道,如果有可能删除以过去为条件的观察,即对于个体2,它应该删除观察7,因为6是0.

我希望它有道理, 感谢。

2 个答案:

答案 0 :(得分:1)

以下内容应过滤掉woman的所有观察值,而不是给定个体的第一次观察值。假设数据集按个人排序。

data x;
  set x;
  by individual;
  retain _woman;
  if first.individual then _woman = woman;
  else if _woman ^= woman then delete;
run;

答案 1 :(得分:0)

所以你想保留每个individualtime的第一个观察结果?

您可以执行以下操作(数据集应按individualtime排序):

data want;
set have;
by individual time;
if first.time = 1 then output;
run;