SAS:PROC TABULATE 重新排列 Header 个子组
SAS: PROC TABULATE Rearrange Header Subgroups
问题:如何控制PROC TABULATE输出中子组的顺序?
例如,假设我有这个输出,即 segment
内的 (A, B):
data example;
input group $ segment $;
datalines;
1 A
1 B
2 A
2 A
3 B
3 B
;
run;
proc tabulate data = example;
class group segment;
table group all, all = 'Total'*n segment*n;
run;
+-----------------------+------------+-------------------------+
+ + + segment +
+ + +------------+------------+
+ + Total + A + B +
+ +------------+------------+------------+
+ + N + N + N +
+-----------------------+------------+------------+------------+
+ group + + + +
+-----------------------+ + + +
+ 1 + 2.00 + 1.00 + 1.00 +
+-----------------------+------------+------------+------------+
+ 2 + 2.00 + 2.00 + . +
+-----------------------+------------+------------+------------+
+ 3 + 2.00 + . + 2.00 +
+-----------------------+------------+------------+------------+
+ All + 6.00 + 3.00 + 3.00 +
+-----------------------+------------+------------+------------+
我如何重新排列 segment
的子组以相反的顺序出现,(B, A)?
+-----------------------+------------+-------------------------+
+ + + segment +
+ + +------------+------------+
+ + Total + B + A +
+ +------------+------------+------------+
+ + N + N + N +
+-----------------------+------------+------------+------------+
+ group + + + +
+-----------------------+ + + +
+ 1 + 2.00 + 1.00 + 1.00 +
+-----------------------+------------+------------+------------+
+ 2 + 2.00 + . + 2.00 +
+-----------------------+------------+------------+------------+
+ 3 + 2.00 + 2.00 + . +
+-----------------------+------------+------------+------------+
+ All + 6.00 + 3.00 + 3.00 +
+-----------------------+------------+------------+------------+
似乎可以选择使用 DESC 或 DESCENDING= 对子组进行排序,但这些都不适合我。我的部分问题可能是我使用的术语。我不认为 "A" 和 "B" 在 SAS 词典中被称为子组。
如果您先对数据排序,然后对用户 order=data
进行排序,您应该能够得到您需要的内容:
proc sort data=example;
by group descending segment;
run;
proc tabulate data = example order=data;
class group segment;
table group all, all = 'Total'*n segment*n;
run;
问题:如何控制PROC TABULATE输出中子组的顺序?
例如,假设我有这个输出,即 segment
内的 (A, B):
data example;
input group $ segment $;
datalines;
1 A
1 B
2 A
2 A
3 B
3 B
;
run;
proc tabulate data = example;
class group segment;
table group all, all = 'Total'*n segment*n;
run;
+-----------------------+------------+-------------------------+
+ + + segment +
+ + +------------+------------+
+ + Total + A + B +
+ +------------+------------+------------+
+ + N + N + N +
+-----------------------+------------+------------+------------+
+ group + + + +
+-----------------------+ + + +
+ 1 + 2.00 + 1.00 + 1.00 +
+-----------------------+------------+------------+------------+
+ 2 + 2.00 + 2.00 + . +
+-----------------------+------------+------------+------------+
+ 3 + 2.00 + . + 2.00 +
+-----------------------+------------+------------+------------+
+ All + 6.00 + 3.00 + 3.00 +
+-----------------------+------------+------------+------------+
我如何重新排列 segment
的子组以相反的顺序出现,(B, A)?
+-----------------------+------------+-------------------------+
+ + + segment +
+ + +------------+------------+
+ + Total + B + A +
+ +------------+------------+------------+
+ + N + N + N +
+-----------------------+------------+------------+------------+
+ group + + + +
+-----------------------+ + + +
+ 1 + 2.00 + 1.00 + 1.00 +
+-----------------------+------------+------------+------------+
+ 2 + 2.00 + . + 2.00 +
+-----------------------+------------+------------+------------+
+ 3 + 2.00 + 2.00 + . +
+-----------------------+------------+------------+------------+
+ All + 6.00 + 3.00 + 3.00 +
+-----------------------+------------+------------+------------+
似乎可以选择使用 DESC 或 DESCENDING= 对子组进行排序,但这些都不适合我。我的部分问题可能是我使用的术语。我不认为 "A" 和 "B" 在 SAS 词典中被称为子组。
如果您先对数据排序,然后对用户 order=data
进行排序,您应该能够得到您需要的内容:
proc sort data=example;
by group descending segment;
run;
proc tabulate data = example order=data;
class group segment;
table group all, all = 'Total'*n segment*n;
run;