【发布时间】:2014-01-15 18:38:49
【问题描述】:
我有一个由 5 个变量组成的数据集,其中包含两个因变量。我的目标是让这个数据集附加额外的行,其中 TOTAL 作为自变量的值,因变量的值相应地发生变化。
为单个自变量执行此操作不是问题,我会按照以下方式做一些事情:
proc sql;
create table want as
select "TOTAL" as independent_var1,
independent_var2,
...
independent_var5,
sum(dependent_1) as dependent_1,
sum(dependent_2) as dependent_2
from have
group by independent_var1,...,independent_var5;
quit;
然后以您选择的任何方式附加原始数据集。但是,我想要上面的 x5(对于每个自变量),然后再对于 5 个自变量中的每个可能的 TOTAL/nontotal 组合。不知道有多少数据集在我脑海中浮现……但数量相当可观。
所以到目前为止我想出的最佳策略是使用上面的一些温和的创意宏代码来生成所有可能的总计/非总计表组合,但似乎 SAS 可能有更好的方法,也许隐藏在我从未听说过的深奥的 proc 步骤中......
--
尝试显示示例,使用三个自变量和 1 个因变量:
Ind1|2|3|Dependent1
0 0 0 1
0 0 1 3
0 1 0 5
0 1 1 7
期望的输出是:
0 0 ALL 4
0 1 ALL 12
0 ALL 0 6
0 ALL 1 10
ALL 0 0 1
ALL 0 1 3
ALL 1 0 5
ALL 1 1 7
0 ALL ALL 16
ALL 0 ALL 4
ALL 1 ALL 12
ALL ALL 0 6
ALL ALL 1 10
ALL ALL ALL 16
0 0 0 1
0 0 1 3
0 1 0 5
0 1 1 7
我可能忘记了一些组合,但这应该有助于理解这一点。
【问题讨论】:
-
您是否有不使用
PROC MEANS或PROC TABULATE的原因,在我看来它们都可以完美地做到这一点?也许一个带有几个 IV 和 DV 以及大约 20 行来显示“拥有”和“想要”的小例子会有所帮助。 -
添加了小例子。我从来没有以这种方式使用过 proc tabulate ;我会试着研究一下,看看我能不能让它工作。
标签: sas