处理向表添加汇总行的更清洁方法?

时间:2014-01-15 18:38:50

标签: sas

我有一个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可能有更好的方法,也许隐藏在一个我从未听说过的神秘的过程中......

-

尝试使用三个自变量和一个因变量显示示例:

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

我可能已经忘记了一些组合,但这应该可以解决问题。

1 个答案:

答案 0 :(得分:0)

PROC MEANS应该为您轻松地做到这一点。您需要清理输出以使其与您想要的完全匹配(在示例中缺少INDx =“ALL”),否则它会正确完成计算。

data have;
input Ind1 Ind2 Ind3 Dependent1;
datalines;
0 0 0 1
0 0 1 3
0 1 0 5
0 1 1 7
;;;;
run;

proc means data=have;
class ind1 ind2 ind3;
var dependent1;
output out=want sum=;
run;