Sas Proc TABLATE不支持order=data选项
我使用proc TABLATE导出一些已经以特定方式排序的数据,并使用order=data选项保留起始顺序。然而,SAS并不合作。请参见下面的人为示例: 节目: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
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,如果您试图很好地打印出来,它的行为会更像您所期望的。甚至程序打印
您还可以创建一种格式,为每一行设置单独的值,将其格式化为按原样显示,但实际上,该值的基础是一个数字,该数字的构建方式是,最低的数字是表上的顶行,最高的数字是表上该部分的底行。这很有意义,这与我模糊的怀疑是一致的。我仍然希望有人知道一个小把戏来推翻这种逻辑行为,这不是第一次。与此同时,我正专注于使过程报告符合我的需要。我上面提到的技巧是我能想象的唯一可行的方法——这不是不可能做到的,我以前也做过,因为其他原因。