本站分享:AI、大数据、数据分析师培训认证考试,包括:Python培训Excel培训Matlab培训SPSS培训SAS培训R语言培训Hadoop培训Amos培训Stata培训Eviews培训

SAS的Proc rank 的用法_as proc rank

sas培训 cdadata 5955℃

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 ,就是对名次进行指数分布,公式参见帮助。
讲完了!

转载请注明:数据分析 » SAS的Proc rank 的用法_as proc rank

喜欢 (3)or分享 (0)