我正在使用 PROC REPORT
生成加权和的报告 . 有两列需要汇总,均使用 MEAN
统计信息 . 最重要的是,我想输出总重量 .
我有2个问题 .
-
我似乎无法获得每笔金额的 Headers 以反映被汇总的变量 .
-
我需要为每列提供不同的格式 .
以下是一些示例数据:
data test;
format lev1-lev3 $3. weight percent10.2 duration 6.2 convexity 6.4;
informat weight percent10.2 duration 6.2 convexity 6.4;
input lev1 lev2 lev3 weight duration convexity;
datalines;
A C H 16.11% 3.21 0.6182
A C I 3.83% 9.06 1.2244
A D J 7.67% 2.21 3.4010
A D K 16.90% 3.98 0.0303
B E L 2.68% 1.88 1.9515
B E M 16.68% 4.36 3.1851
B F N 20.79% 2.64 0.1145
B F O 15.34% 5.55 2.4408
;
run;
我已经尝试了很多方法来定义 PROC REPORT
中的内容 . 这是众多的一个:
proc report data=test nowd out=report;
column lev1 lev2 lev3 duration,(SUMWGT MEAN) convexity,(Mean);
weight weight;
define lev1 / group;
define lev2 / group;
define lev3 / group;
define duration / 'Duration' ;
define sumwgt / 'Weight' format=percent10.2;
define mean / '' format=6.2;
define convexity / 'Convexity';
*define mean / 'Convexity' format=6.4;
break before lev1 / summarize ;
break before lev2 / summarize ;
rbreak before / summarize;
run;
我的最终目标是:
Lev1 Lev2 Lev3 Weight Duration Convextiy
100.00% 3.88 1.3943
A 44.51% 3.83 0.9267
...
我也玩过 PROC TABULATE
,但我不太喜欢它所呈现的 table .
示例TABULATE混乱:
PROC TABULATE DATA=WORK.test;
VAR duration convexity;
CLASS LEV1 / ORDER=UNFORMATTED MISSING;
CLASS LEV2 / ORDER=UNFORMATTED MISSING;
CLASS LEV3 / ORDER=UNFORMATTED MISSING;
TABLE
/* Row Dimension */
ALL={LABEL="+"}
LEV1*(
ALL={LABEL="+"}
LEV2*(
ALL={LABEL="+"}
LEV3 ) )
,
/* Column Dimension */
duration={LABEL="Weight"}*SumWgt={LABEL=""}*f=percent10.2
duration={LABEL="Duration"}*Mean={LABEL=""}*f=6.2
convexity={LABEL="Convexity"}*Mean={LABEL=""}*f=6.4;
WEIGHT weight;
RUN;
1 回答
我认为你会遇到挑战
PROC REPORT
. 也许辛西娅@ SAS可以解决这个问题,我不知道,但特别是将行 Headers 放在正确位置将极具挑战性 .我建议预处理方法(使用PROC MEANS或类似方法),然后报告该结果 . 很容易做到 .
这可能接近你想要的,例如: