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 に答える