SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 642|回复: 3
打印 上一主题 下一主题

奇怪的排序—求助

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-8-2 11:39:57 | 只看该作者

奇怪的排序—求助

大侠们:小弟遇到一个比较困难的排序问题,希望高手不吝赐教!
数据集样本
date  f1  f2  f3  f4  f5  f6  f7
1-1    1    2   3   8    9   15  4
1-2    5    2   8   7    52   4  1
1-3    5    8   1    2    4    4  7
1-4    0    1    2   1    8    9   4
1-5   4     8    7   1    2    3   2
...
问题是,对每一天,找出7个字段中最大的三个值,然后用1代替,其余的值用0代替。
比如得到
date  f1  f2  f3  f4  f5  f6  f7
1-1    0   0    0   1    1   1   0
1-2    0   0    1   1    1   0   0
1-3    1   1    0    0   0   0   1
...
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-8-2 12:24:11 | 只看该作者

Re: 奇怪的排序—求助

可以用个do while循环3次,记3个临时变量,每次取MAX,记录下字段名后就赋.,让它 变成最小,循环结束将3个变量赋1,其他赋0。

比较简陋,抛砖引玉
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-8-2 13:48:51 | 只看该作者

Re: 奇怪的排序—求助

[code:qunuzjjr]data original;
        input date $ f1 f2 f3 f4 f5 f6 f7;
datalines;
1-1 1 2 3 8 9 15 4
1-2 5 2 8 7 52 4 1
1-3 5 8 1 2 4 4 7
1-4 0 1 2 1 8 9 4
1-5 4 8 7 1 2 3 2
;

data final;
        set original;
        array arr{2,7} f1-f7 t1-t7;
        do i=1 to 7;
                temp=arr(1,i);
                arr(2,i)=.;
                do j=1 to 7;
                        if temp>=arr(1,j) then arr(2,i)+1;
                end;
        end;
        do i=1 to 7;
                if arr(2,i)>4 then arr(1,i)=1;
                else arr(1,i)=0;
        end;
        keep date f:;
run;[/code:qunuzjjr]

TO: simonjinxl
如果记录是这样的怎么处理?
date f1 f2 f3 f4 f5 f6 f7
1-1 1 2 3 8 9 15 8
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-8-2 17:56:50 | 只看该作者

Re: 奇怪的排序—求助

sas 9.0或以上版本新增函数call sortn();可以解决这个问题
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 19:44 , Processed in 0.132442 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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