SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 537|回复: 4
打印 上一主题 下一主题

样本筛选问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-12-2 17:37:35 | 只看该作者

样本筛选问题

数据A ,有10个人(ID),每个人有1-100笔交易不等,现在要提取每个人的 top 3 交易 (根据交易量 AMT),有没有什么快速的方法实现?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-12-3 09:29:25 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-12-3 09:54:10 | 只看该作者

Re: 样本筛选问题

to nobodyknows
<!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
非常简洁的code,正是所需要的,谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-12-3 10:56:12 | 只看该作者

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]
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
5#
发表于 2010-12-3 13:47:17 | 只看该作者

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]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-13 19:28 , Processed in 0.143552 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表