SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 819|回复: 2
打印 上一主题 下一主题

求助:如何筛选出排名前三分之一的数据

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-11-25 06:51:29 | 只看该作者

求助:如何筛选出排名前三分之一的数据

对于一个变量,数万个数据,我用proc rank将其排名之后,想筛选出排名前三分之一,中间三分之一,后三分之一的三个组数据,用这三个组的数据分别算另一个变量数值。能否用SAS实现呢?(数据个数不定,而且不一定能被三整除)

比如数据如下:

               price
shirt1         10
shirt2         34
shirt3         8
shirt4         50
......
......
......
shirt42098   20


初学者,多谢指教!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-11-25 08:29:22 | 只看该作者

Re: 求助:如何筛选出排名前三分之一的数据

应该可以实现吧,可以在排序后生成新变量rank,然后按照rank,定义为三段进行筛选!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-11-25 10:56:05 | 只看该作者

Re: 求助:如何筛选出排名前三分之一的数据

呵呵,复杂了一点。class =1 前1/3  ;class =2 中间1/3;class=3后1/3。
data raw;
input id$ price;
cards;
shirt1 10
shirt2 34
shirt3 8
shirt4 50
shirt5 50
;
run;
data _null_;
set raw end=end;
if end then call symput('n',_n_);
run;

data result;
set raw;
if  _n_<=&n/3 then class=1;
else if _n_<=2*(&n/3) then class=2;
else class=3;
run;
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-4 02:34 , Processed in 0.098927 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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