【发布时间】:2015-06-30 04:11:07
【问题描述】:
我一直在寻找解决方案,但在社区的 SAS 中找不到任何类似的问题。所以这是我的问题:我有一个很大的 SAS 表:假设有 2 个类和 26 个变量:
A B Var1 Var2 ... Var25 Var26
-----------------------------
1 1 10 20 ... 35 30
1 2 12 24 ... 32 45
1 3 20 23 ... 24 68
2 1 13 29 ... 22 57
2 2 32 43 ... 33 65
2 3 11 76 ... 32 45
...................
...................
我需要通过Class=B计算所有26个变量的累加和,也就是说对于A=1,会通过B=1,2,3累加;对于 A=2,它将通过 B=1,2,3 累积。结果表如下:
A B Cum1 Cum2 ... Cum25 Cum26
-----------------------------
1 1 10 20 ... 35 30
1 2 22 44 ... 67 75
1 3 40 67 ... 91 143
2 1 13 29 ... 22 57
2 2 45 72 ... 55 121
2 3 56 148 .. 87 166
...................
...................
我可以选择hard way,比如在一个循环中描述26个变量中的每一个,然后我可以通过B找到累积和。但是我想在不描述所有变量的情况下找到一个更实际的解决方案。
在其中一个网站上提出了这样的解决方案:
proc sort data= (drop=percent cum_pct rename=(count=demand cum_freq=cal));
weight var1;
run;
我不确定 Proc Sort 中是否有类似“Weight”的选项,但如果它有效,那么我想也许我可以通过放置 numeric 而不是 Var1 来修改它,然后是 Proc排序过程可以对所有数值进行处理:
proc sort data= (drop=percent cum_pct rename=(count=demand cum_freq=cal));
weight _numerical_;
run;
有什么想法吗?
【问题讨论】:
-
根据您发布的输入数据,您能否添加所需输出的样本?我不确定我是否理解您的目标。
-
@DWal 我刚刚编辑了我的问题。额外的解释和我的目标(结果表)
-
如果您有 SAS ETS,您可以查看 proc expand
标签: sas