原始输出
Count
AAB BB
01NOV2014 5 4
02NOV2014 4 3
但理想的输出是
Count
BB AAB
01NOV2014 4 5
02NOV2014 4 4
有没有办法从proc tabulate
更改n个k表,并按要求列出?
由于k不小,我正在寻找一种有效的方法来实现这一目标。也许将请求的订单存储在宏变量中?
答案 0 :(得分:4)
最简单的答案取决于订单的派生方式。
您在class
变量上有一些排序选项,例如order=data
,如果数据按此顺序存储,则可能会为您提供所需的结果。这可能很棘手,但有时候这是获得该结果的简单方法。
其次,您有几个与格式相关的选项。
BB=1
,AAB=2
等,则使用order=unformatted
来实现这一目标。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;