SAS的Proc rank 的用法

proc rank 其实最主要的是掌握那几个选项,该proc 的整体语法结构如下:

           proc rank <选项>;
                var 变量;
                ranks 新变量名字;
                by 分组变量;
           run;
这是一个整体的语法结构,举例,比如说我要对sashelp中的height排名次:

          proc rank data=sashelp.class out=result;
               var height;
          run;
很显然就是这样写,用var来指定要排名次的变量,但是你运行该程序后会发现一个问题,就是原来的height的值都被名次代替了。如果我想保留原来的height值,那就需要用ranks语句了:
         proc rank data=sashelp.class out=result;
              var height;
              ranks r_height;
         run;
这样原来的height变量就不会动,生成名次变量r_height,这就是ranks的作用。

接着讲选项,排名次默认的方法是从小排到大的,那你如果需要从大到小来排,你就需要在选项proc rank <选项>;制定,比如说我要对sashelp的升高按照从大到小排名次,那么程序如下:

        proc rank data=sashelp.class out=result descending;
             var height;
             ranks r_height;
        run;
接着再讲相同值名次怎么算,比如说45 68 68 9,这四个数字从小到大排名次,sas默认拍出来的结果是

4 2.5 2.5 1 也就是相同值得话,名次怎么排,就是把相同的值得名次相加作平均。4 5 5 5 6 排名次的结果应该是 1 3 3 3 5 这些明白 ?OK? 继续
那么还有一种相同值的名次处理方法,刚才那种取名次均值得方法 叫做mean
       proc rank data=sashelp.class out=result descending;
            var height;
            ranks r_height;
       run;
                等价
proc rank data=sashelp.class out=result descending ties=mean;
 var height;
 ranks r_height;
run;
也就是说sas默认相同值得名次用均值名次处理,然而sas还提供了另外两种处理方法:
一种就是去小的那个名次,举例子:4 5 5 5 6 排名次的结果应该是 1 2 2 2 5
       proc rank data=sashelp.class out=result descending ties=low;
            var height;
            ranks r_height;
       run;
另外一种就是取大的那个名次,4 5 5 5 6 排名次的结果应该是 1 4 4 4 5
      proc rank data=sashelp.class out=result descending ties=high;
           var height;
           ranks r_height;
      run;
所以可以通过制定ties=选项值 来让sas知道如何去处理相同值的名次
接着讲一个选项,名次用分数来表示,用排到的名次除以总人数,来作为rank的值。这时候就需要各选项fraction,用这个选项的时候一定要注意,如果你没有用ties=选项,那么sas默认的不再用均值处理名次
而是用最大的那种方法
     proc rank data=sashelp.class out=result descending ties=mean fraction;
          var height;
          ranks r_height;
     run;
这里拍出的rank实际上就是名次/总人数,这里的ties=mean不能身略,如果身略,那么sas默认ties=high
所以这里要注意。
NPLUS1 这个选项类同于fraction,前者除以(总人数+1) k/(n+1),后者处以(总人数) k/n
还有你把除出来的值进行百分比,也就是说你要再乘以100,那么就用percent选项。
     proc rank data=sashelp.class out=result descending ties=mean percent;
          var height;
          ranks r_height;
     run;

     proc rank data=sashelp.class out=result descending ties=mean fraction;
          var height;
          ranks r_height;
    run;
前者是k/n*100 ,后者是k/n  仅此区别而已。
接着再讲一个分组选项,有点份为数的意思,1 2 3 4 5 6 分成两组,首先从小到大或从大到小排列,然后均分成2组:

     proc rank data=sashelp.class out=result descending ties=mean groups=2;
          var height;
          ranks r_height;
     run;
groups=是用来指定分成几组,这里不是随机分组,是按照顺序以后的分组,也就是说排好名次后按名次顺序分组

最后还剩下2个选项,一个选项是normal= 貌似将名次再正态化,有三种正态化方法 blom 、 tukey 、vw 这三种方法统计上怎么去正态化名次,公式分别是什么,请参照帮助。
最后一个选项SAVAGE ,就是对名次进行指数分布,公式参见帮助。
讲完了!

数据分析,数据科学及AI算法是当前最热门的职业。这些职业有着共同的特点:面向数字的,针对编程的以及采取分析手段的。 这些当代热点特性使得在就业市场上对以上职位需求激增也就不足为奇了。但是,市场上提供这方面的大型综合的培训课程是有限,如果说有,大多是知识范围狭窄且非综合性的,而且大多培训都缺乏方法论与实务结合。一般的情况是讲师讲述某种语言的一堆代码,学生听完后甚至连使用方法及代码的前提都不清楚,更别提实际应用场景了。这里,掌握一门数据分析软件本身没错,但仅通过单一的编程培训很难获得聘用为数据分析师或数据科学家所需的技能。那我的解决方案是什么呢?首先,我把所有数据分析中的典型问题都归类总结出来,再结合相应的实际问题,数据以及案例,同时采用世界上最流行的两种数据分析软件:PYTHON 和 SAS去解决这些问题,并将这些解决方法传授给学生。学生在完成培训后更重要的收获是知道每一问题从产生直至解决的前因后果和应用场景,这是因为我在每一课程章节最前都会交代方法论,知识要点及应用场合。SAS和PYTHON可以一起学吗?当然可以。因为我就是这样做到的。具体步骤是,我在课程当中安排了一系列主题,然后使用两种编程语言解决同样的问题。我总结出这样做的好处是边学习边比较,最后在不知不觉当中掌握了两门语言的精华和数据分析的通用方法或模式。过程虽有点长,但十分有趣。最后,为了巩固已学的知识和技能,我还专门安排了针对PYTHON 和 SAS的中小型项目及详细代码讲解。另外,课程当中使用的全部编程代码及数据文件都将免费地提供给注册的学生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值