【问题标题】:SAS: PROC TABULATE Rearrange Header SubgroupsSAS:PROC TABULATE 重新排列标题子组
【发布时间】:2016-09-14 06:25:44
【问题描述】:

问题:如何控制 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 词典中被称为子组。

【问题讨论】:

    标签: sas proc


    【解决方案1】:

    如果你先对数据进行排序,然后用户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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-07
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多