我想创建多个由某个变量分层的双向表。我希望打印的顺序是这样的:
"AxB when strata=1
AxB when strata=2
AxC when strata=1"
etc...
Instead, my code gives me
"AxB when strata=1
AxC when strata=1
AxB when strata=2"
etc...
这是我的代码:
PROC SORT data=mydata;
by riskgroup;
run;
PROC FREQ data=mydata;
by riskgroup;
tables Stent*(RACE INCOME EDUCATION);
run;
谢谢你的帮助!
答案 0 :(得分:1)
只需使用多个TABLES
语句。
PROC FREQ data=mydata;
tables riskgroup*Stent*RACE;
tables riskgroup*Stent*INCOME;
run;
如果你的变量列表很长,那么写一个宏(或其他方法)来生成语句。
答案 1 :(得分:1)
BY
本身就是这样做的(它首先计算x1表,然后计算x2表)。
您可以选择:PROC FREQ
和PROC TABULATE
都有“页面”的概念,或多或少。而不是by
有第三个十字路口:
所以而不是:
proc sort data=sashelp.cars out=cars;
by origin;
run;
proc freq data=cars;
by origin;
table type*(cylinders drivetrain);
run;
你想:
proc freq data=cars;
table origin*type*(cylinders drivetrain);
run;
你甚至不必先在这里排序。
和表格中的等价物,我更喜欢:
proc tabulate data=sashelp.cars;
class Origin Cylinders Type DriveTrain;
tables origin, Type, Cylinders;
tables origin, Type, DriveTrain;
run;
注意这里的多个table
语句,你可以在任何一个proc中做到这一点,它有时看起来更清洁,特别是在进行3级交叉时。