我正在使用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
用于美容目的,如果从洗牌中完全停止。有谁知道我的表现如何?
答案 0 :(得分:0)
SAS正在做它正在做的事情:它按照它们在数据集中的顺序对它们进行排序。
它没有通过联合命令对它们进行排序,但这不是proc内部的工作方式。它正在设置一个交叉表,而不仅仅是打印出数字(你基本上都是使用它,有时那很好,但不是为了这个目的)。 SAS事先并不知道某个var2
只显示var1
。
我会使用proc report
,如果你试图将它打印出来,那将会更像你期望的那样。甚至是proc print
。
您还可以为每一行创建一个具有单独值的格式,将它们格式化为按原样显示,但实际上该值的基础是一个数字(构建为使得最小数字是表格中的顶行)最高编号是表格中该部分的底行。