proc不按字母顺序列出输出

时间:2014-11-14 10:12:34

标签: sas

原始输出

                 Count 
            AAB          BB
01NOV2014   5            4
02NOV2014   4            3

但理想的输出是

                 Count 
            BB          AAB
01NOV2014   4            5
02NOV2014   4            4

有没有办法从proc tabulate更改n个k表,并按要求列出?

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

第二个选项的示例:

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;
相关问题