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&#46;nianji then do;
    mingci=1;mc=mingci;
  end;
  else do;
    mingci+1;
        retain mc;
        if first&#46;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&lt;=3)) descending ;
var amt;
by id;
ranks rank;
run;[/code:2925yfr1]




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2