Sas Proc TABLATE不支持order=data选项

Sas Proc TABLATE不支持order=data选项,sas,Sas,我使用proc TABLATE导出一些已经以特定方式排序的数据,并使用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

我使用proc TABLATE导出一些已经以特定方式排序的数据,并使用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中的顺序


我只是为了美观而使用表格,我想完全停止,如果从洗牌的事情。有人知道我是如何让它运行的吗?

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

它并不是按联合顺序排列的,不过,这不是程序内部的工作方式。它设置了一个交叉表,不只是打印出你基本上使用它的数字,有时这很好,但不是为了这个目的。SAS事先不知道只有一些var2出现在特定的var1中

我会使用proc-report,如果您试图很好地打印出来,它的行为会更像您所期望的。甚至程序打印


您还可以创建一种格式,为每一行设置单独的值,将其格式化为按原样显示,但实际上,该值的基础是一个数字,该数字的构建方式是,最低的数字是表上的顶行,最高的数字是表上该部分的底行。

这很有意义,这与我模糊的怀疑是一致的。我仍然希望有人知道一个小把戏来推翻这种逻辑行为,这不是第一次。与此同时,我正专注于使过程报告符合我的需要。我上面提到的技巧是我能想象的唯一可行的方法——这不是不可能做到的,我以前也做过,因为其他原因。