使用Tabulate进行3向表

时间:2014-04-17 21:29:05

标签: sas

我正在尝试输出三频频率表。我能够(大致)使用proc freq执行此操作,但希望将变量的控件连接起来。我认为proc tabulate是定制输出的好方法。基本上我想用频率填充单元格,然后在以后自定义百分比。因此,每个单元格中有计数和列百分比。这可以用proc tabulate吗?

现在我有:

proc freq data=have;
table group*age*level / norow nopercent;
run;

这给了我,例如:

enter image description here

我想要的是什么:

enter image description here

以下是我正在使用的代码:

proc tabulate data=ex1;
  class age level group;
  var age;
  table age='Age Category', 
        mean=' '*group=''*level=''*F=10./ RTS=13.;
run;

谢谢!

1 个答案:

答案 0 :(得分:1)

你当然可以接近这一点。你无法真正进入一个人的行列。单元格,它需要将每个东西写到不同的单元格,但理论上有一些复杂的格式(可能使用CSS),你可以删除边框。

您不能同时使用VAR和CLASS,但由于您只是在做百分比,因此您不需要使用MEAN - 您应该只使用N和COLPCTN。如果您正在处理已经汇总的数据,则可能需要以不同方式执行此操作 - 如果是这样,则发布数据集的示例(但在没有FREQ语句的情况下,这不会在PROC FREQ中工作)。

data have;
do _t = 1 to 100;
  age = ceil(3*rand('Uniform'));
  group = floor(2*rand('Uniform'));
  level = floor(5*rand('Uniform'));
  output;
end;
drop _t;
run;

proc tabulate data=have;
  class age level group;
  table age='Age Category', 
        group=''*level=''*(n='n'  colpctn='p')*F=10./ RTS=13.;
run;

这将N和P(n和列%)放在单个级别内的单独相邻单元格中。