使用Proc SQL进行聚合

Bet*_*eta 1 sas

假设我在表单中有一个数据集:

A B C
1 3 5
1 4 8
1 3 3
2 2 2
2 7 6
2 3 3
3 4 4 
3 4 7
3 2 8
Run Code Online (Sandbox Code Playgroud)

现在,我想对A的每个段进行加权平均,然后将它们加到A上.例如,在A var为1中,我想将加权平均值设为(3*5 + 4*8 + 3*3) /(3 + 4 + 3).然后加起来得到5.6.与A的其他2段相同.所以,最后表格如下所示:

A B C   D
1 3 7 5.6
2 6 6 7
3 5 9 8.2
Run Code Online (Sandbox Code Playgroud)

谢谢.

Lon*_*ish 7

只是为了提供替代方法,您可以使用PROC SUMMARY中的WEIGHT语句来获得相同的结果.我在你的示例决赛桌表中唯一不清楚的是B&C列的值来自哪里(我将这些从我的解决方案中删除).

    proc summary data=test nway;
    class a;
    var c / weight=b;
    output out=agg2 (drop=_:) mean=d;
    run;
Run Code Online (Sandbox Code Playgroud)