我正在尝试输出三频频率表。我能够(大致)使用proc freq执行此操作,但希望将变量的控件连接起来。我认为proc tabulate
是定制输出的好方法。基本上我想用频率填充单元格,然后在以后自定义百分比。因此,每个单元格中有计数和列百分比。这可以用proc tabulate
吗?
现在我有:
proc freq data=have;
table group*age*level / norow nopercent;
run;
这给了我,例如:
我想要的是什么:
以下是我正在使用的代码:
proc tabulate data=ex1;
class age level group;
var age;
table age='Age Category',
mean=' '*group=''*level=''*F=10./ RTS=13.;
run;
谢谢!
答案 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和列%)放在单个级别内的单独相邻单元格中。