【问题标题】:proc tabulate output not in alphabetical orderproc制表输出不按字母顺序
【发布时间】:2014-11-14 10:12:33
【问题描述】:

原始输出

                 Count 
            AAB          BB
01NOV2014   5            4
02NOV2014   4            3

但理想的输出是

                 Count 
            BB          AAB
01NOV2014   4            5
02NOV2014   4            4

有没有办法将 n x k 表从 proc tabulate 更改为按要求列出?

由于 k 不小,我正在寻找一种有效的方法来实现这一点。也许将请求的订单存储在宏变量中?

【问题讨论】:

  • 请分享您的代码 - 到目前为止您尝试了什么?
  • 在这种情况下,这是一个非常直接的问题,答案很简单——我真的不认为代码是必需的(生成该表的 PROC TABULATE 毕竟是微不足道的)。

标签: sas


【解决方案1】:

最简单的答案取决于订单的派生方式。

您对class 变量有一些排序选项,例如order=data,如果数据按该顺序存储,则可能会为您提供所需的结果。这可能很棘手,但有时是获得该结果的简单方法。

其次,您有几个与格式相关的选项。

  • 如果数据可以存储为格式化数字,其中BB=1AAB=2等,则使用order=unformatted来实现。
  • 创建一个按顺序列出值的格式,只需将它们格式化为自己,在 value 语句的选项中使用 notsorted,然后在 class 语句中使用 order=datapreloadfmt

第二个选项的例子:

data have;
input var $ count;
datalines;
AAA 1
AAB 2
BBA 3
BBB 4
;;;;
run;

proc format;
 value $myformatf (notsorted)
  BBB=BBB
  AAB=AAB
  BBA=BBA
  AAA=AAA
  other=' ';
quit;

proc tabulate data=have;
  class var/order=data preloadfmt;
  format var $myformatf.;
  var count;
  tables var,count*sum;
run;

【讨论】:

    猜你喜欢
    • 2016-08-01
    • 2018-03-14
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 2019-05-08
    • 2019-11-22
    • 2019-04-05
    相关资源
    最近更新 更多