我的数据集是:
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 行)。谢谢!
我的数据集是:
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 行)。谢谢!
只是为了有另一种方法......
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。
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;