我在SAS中有以下数据集:
Obs Date ID Diam frequency
1 19736 H-3-10 1.92 1
2 19736 H-3-12 1.90 1
3 19737 E-2-10 2.92 2
4 19737 E-2-10 3.02 2
5 19737 E-2-16 2.34 1
我想通过Diam
和Date
得到变量ID
的加权平均值。这是我目前的代码:
proc means data= dataset;
by Date ID;
var Diam;
weight frequency;
output out = m_diam;
run;
如果我使用或weight
声明,我获得的手段是相同的!
如果我省略by
语句,则加权和未加权的方法是不同的。但它给了我一个整体的意思,这不是我想要的。
谢谢你的帮助。
答案 0 :(得分:3)
在你的例子中,权重并没有对手段做任何事情,因为在一个分组内权重都是相等的 - 你没有frequency
具有可变金额的情况。 SUM
实际上会有所不同(因为SUM是加权平均值的总和),但您不要求该统计量。在讨论相对统计数据(平均值,比例等)时,权重只会在一个分组内部做一些事情并不总是相同的。
要看到这一点,让我们举个例子,将2个权重中的一个更改为1.然后我们将创建DIAM_UNWT,并利用您可以使用weight
选项的事实。 var
语句仅对特定变量应用权重。这将让我们看到它正在工作 - DIAM_UNWT和DIAM在这里会有不同的值,而如果它们都是2,它们就不会。
data have;
input Date ID $ Diam frequency ;
diam_unwt=diam;
datalines;
19736 H-3-10 1.92 1
19736 H-3-12 1.90 1
19737 E-2-10 2.92 1 /*CHANGED*/
19737 E-2-10 3.02 2
19737 E-2-16 2.34 1
;;;;
run;
proc means data= have;
by Date ID;
var Diam/weight=frequency;
var diam_unwt;
output out = m_diam;
run;
使用DIAM_UNWT,平均值为2.97,即介于2.92和3.02之间的1/2。使用DIAM(加权),平均值为2.98666667,是它们之间的2/3(反映了2:1的重量比)。