SAS中文论坛
标题:
样本筛选问题
[打印本页]
作者:
shiyiming
时间:
2010-12-2 17:37
标题:
样本筛选问题
数据A ,有10个人(ID),每个人有1-100笔交易不等,现在要提取每个人的 top 3 交易 (根据交易量 AMT),有没有什么快速的方法实现?
作者:
shiyiming
时间:
2010-12-3 09:29
标题:
Re: 样本筛选问题
[code:zmqfx4qq]
data test;
do id=1 to 10;
num=ceil(100*ranuni(12345));
do i=1 to num;
amt=ranuni(123);
output;
end;
end;
drop i num;
run;
proc sort data=test; by id descending amt;run;
data out;
do _n_=1 by 1 until(last.id);
set test;
by id;
if _n_<4 then output;
end;
run;
[/code:zmqfx4qq]
作者:
shiyiming
时间:
2010-12-3 09:54
标题:
Re: 样本筛选问题
to nobodyknows
<!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
非常简洁的code,正是所需要的,谢谢!
作者:
shiyiming
时间:
2010-12-3 10:56
标题:
Re: 样本筛选问题
以前弄了一个排名次的程序,可以参考下
[code:2u2cro92]data a;
input nianji chengji;
cards;
1 23
1 45
1 45
1 45
1 45
1 45
1 45
1 42
1 65
2 43
2 74
2 65
2 45
;
run;
proc sort;
by nianji descending chengji;
run;
data a;
set a;
by nianji descending chengji;
if first.nianji then do;
mingci=1;mc=mingci;
end;
else do;
mingci+1;
retain mc;
if first.chengji then mc=mingci;
end;
run;
[/code:2u2cro92]
作者:
Qiong
时间:
2010-12-3 13:47
标题:
Re: 样本筛选问题
[code:2925yfr1]
proc rank data=v1 ties=high out=v2(where=(rank<=3)) descending ;
var amt;
by id;
ranks rank;
run;[/code:2925yfr1]
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2