我有一个人员级别数据集,其中包含三个分类变量V1,V2和V3。我想使用Proc Tabulate来计算上面列出的三个类别的变量X1,X2和X3的平均值,以及人数和V1和V2的百分比(即V3全部时)。 这是我的第一次尝试。
Proc tabulate date = in_data
Out = out_data;
Var X1 X2 X3;
Class V1 V2 V3;
Table (V1 all) * (V2 all) * (V3 all), N mean pctn<V1 V2>;
Run;
这给出了错误消息“在以下嵌套V1 * V2 * V3 * Mean中,在没有分析变量的情况下请求了N以外的统计”。我不认为我的语法非常正确。关于如何修复它的任何想法?谢谢。
答案 0 :(得分:1)
您需要在表语句中包含变量。我认为这应该有效:
Proc tabulate date = in_data
Out = out_data;
Var X1 X2 X3;
Class V1 V2 V3;
Table (V1 all) * (V2 all) * (V3 all), (X1 X2 X3)*(N mean);
Run;
这对我有用:
Proc tabulate data = sashelp.class
Out = out_data;
Var age weight height;
Class sex;
Table (sex all), (age weight height)*( N mean);
Run;
编辑:
您的问题以某种方式特定于您的数据,您必须包含示例数据或其他正在发生的事情。
这是一个值为0的复制品,摘要中没有任何问题。
data have;
do i=1 to 1000;
v1=rand('bernoulli', 0.4);
v2=rand('bernoulli', 0.7);
x1=rand('uniform')*3+1;
x2=rand('uniform')*9+1;
output;
end;
drop i;
run;
proc print data=have(obs=10);
run;
proc tabulate data=have out=check;
class v1 v2;
var x1 x2;
table (v1 all) (v2 all), (x1 x2)*(n mean);
run;