0

我的数据集是:

ID     AGE

1      65
1      66
1      67
1      68
1      69
1      70
1      71
2      70
2      71
2      72
3      68
3      69
3      70

 [...]

我的(基本)问题是:这是获取 ID 记录以 开头的数据集的最直接方法65 <= AGE <= 68?(在上面的例子中,我想得到前 7 行和最后 3 行)。谢谢!

4

2 回答 2

2

只是为了有另一种方法......

proc sql;
  delete from input_dataset I where not exists 
    (select 1 from input_dataset D where I.id=D.id having 65 le min(age) le 68);
quit;

如果要创建新数据集,相同的基本查询将作为 SELECT 的一部分工作,反转 NOT。

于 2012-10-12T14:52:33.480 回答
1
data input_dataset;
input ID     AGE;
cards;
1      65
1      66
1      67
1      68
1      69
1      70
1      71
2      70
2      71
2      72
;
run;

proc sort data=input_dataset out=sorted;
by ID;
run;

data work.first_age65to68;
  set sorted;
  retain keepit 0;
  by ID;
  if first.ID then do;
      if AGE ge 65 and AGE le 68 then keepit=1;
      else keepit=0;
  end;
  if keepit;
  drop keepit;
run;
于 2012-10-12T12:46:55.447 回答