Proc Tabulate不会遵循order = data选项

时间:2015-07-08 18:45:46

标签: sas

我正在使用proc tabulate导出已经按特定方式排序的一些数据,并且我使用order=data选项来保留起始顺序。然而SAS并不合作。请参阅下面的人为设计示例:

程序:

data d1;
    input var1 $ var2 $ var3;
    datalines;
e j 1
e k 2
e l 3
b n 1
b k 2
b l 3
b j 4
b m 5
a n 1
a m 2
a l 3
;
run;

proc tabulate order=data;
    class var1 var2;
    var var3;
    table var1*var2, var3;
run;

输出:

            var3     
            Sum      
var1  var2           
e     j         1.00 
      k         2.00 
      l         3.00 
b     j         4.00 
      k         2.00 
      l         3.00 
      n         1.00 
      m         5.00 
a     l         3.00 
      n         1.00 
      m         2.00 

如您所见,var2和var3已在第二和第三个var1组中重新排序。似乎它尽可能地坚持第一个var1中的顺序。

我只是使用tabulate用于美容目的,如果从洗牌中完全停止。有谁知道我的表现如何?

1 个答案:

答案 0 :(得分:0)

SAS正在做它正在做的事情:它按照它们在数据集中的顺序对它们进行排序。

它没有通过联合命令对它们进行排序,但这不是proc内部的工作方式。它正在设置一个交叉表,而不仅仅是打印出数字(你基本上都是使用它,有时那很好,但不是为了这个目的)。 SAS事先并不知道某个var2只显示var1

我会使用proc report,如果你试图将它打印出来,那将会更像你期望的那样。甚至是proc print

您还可以为每一行创建一个具有单独值的格式,将它们格式化为按原样显示,但实际上该值的基础是一个数字(构建为使得最小数字是表格中的顶行)最高编号是表格中该部分的底行。