SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2455|回复: 10
打印 上一主题 下一主题

如何让数据集按照自定义排序

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2007-1-17 00:15:35 | 只看该作者

如何让数据集按照自定义排序

如何让数据集按照自定义排序,请各位达人帮帮忙阿
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2007-1-17 11:18:54 | 只看该作者

short

运用proc short 变量1 变量2...,如果要某个变量降序,在该变量前加descending。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2007-1-17 21:54:17 | 只看该作者

求助

你能举个例子吗?
比如用sort排序是
proc sort data=数据集;
by 变量;
run;
这个proc short 是怎么用的呢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2007-1-18 15:16:46 | 只看该作者

sort proc

估计是字打错了.

proc sort data=sashelp.class out=class;
     by name  descending age  height   ;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2007-1-18 21:25:37 | 只看该作者

排序

各位老大,可能我没有表达清楚,如果表格包含“课程类型”变量,有“课堂”“实验”“见习”“实习”四个观测值,如果按照变化“课程类型”排序的话,系统就会按照“见习”“课堂”“实习”“实验”排序,但是我想强制按照“课堂”“实验”“见习”“实习”排序,大家帮我想想办法!~
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2007-1-19 18:05:04 | 只看该作者

to 缘来是你

[code:54adb]proc sql;
       select *   
            from (select coursetype,     /*coursetype是你的课程类型变量*/
                               case
                                     when coursetype="课堂" then 1
                                     when coursetype="实验" then 2
                                     when coursetype="见习" then 3
                                     when coursetype="实习" then 4
                                 else .
                                 end as testvar
                                 from yourtable)   /*replace the yourtable using data set name*/
              order by testvar;[/code:54adb]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2007-1-21 16:21:46 | 只看该作者

paixu

好象还不行啊,老大,我能知道你的电子邮件的信箱,我把数据集发给你啊,可以吗?站内好象发不过去:)
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2007-1-24 16:16:03 | 只看该作者

SORT

创建一个变量,等于要分类的变量,然后将此变量创建一个FORMAT,值1,2,3,4,然后以它排序.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2007-1-24 20:21:27 | 只看该作者

sort

能否举例阿,谢谢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2007-1-25 09:39:32 | 只看该作者

to 缘来是你

data temp;
set old;
if coursetype='课堂' then
   courseID=1;
else if coursetype='实验' then
   courseID=2;
else if coursetype='见习' then
   courseID=3;
else if coursetyp='实习' then
   courseID=4;
run;

proc sort data=temp out=NewTemp(drop=courseID);
        by courseID;
run;
直接加一个变量COURSEID,根据COURSETYPE类型,生成1,2,3,4(不必要用FORMAT创建新格式了,用IF判断了),然后按照COURSEID排序.不过不清楚在SORT中能否去掉COURSEID变量.实际和上面某位大虾的CODE差不多.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-11 11:05 , Processed in 0.073638 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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