我希望宏变量中的某个变量加权平均值。我的var是 zindi& aa ,我的体重是 wprm& aa
我试图理解两种方法:
一个有proc sql
proc sql noprint;
select mean(zindi&aa. * wprm&aa.)/sum(wprm&aa.) into :Mean_zindi_aa
from Panel(where=(annee&ap.<="&nais18" ));
quit;
它使我的平均值 0.77
一个有proc意味着
proc means data=Panel(where=(annee&ap.<="&nais18" ));
var zindi&ap. ;
weight wprm&ap ;
output out=mean_zindi&ap mean=moy≈
run;
然后是数据_null_ part
产生的平均值 20200 似乎是正确的
所以我的问题是
答案 0 :(得分:3)
proc sql noprint;
select sum(zindi&aa. * wprm&aa.)/sum(wprm&aa.) into :Mean_zindi_aa
from Panel(where=(annee&ap.<="&nais18" ));
quit;
试试这个。看起来你正试图做一个意思(zindi&amp; aa。* wprm&amp; aa。)。如果你需要加权平均值,上面应该有效。因为加权平均值=总和(权重*变量)/总和(权重)
答案 1 :(得分:1)
将PROC SQL更改为:
proc sql noprint;
select SUM(zindi&aa. * wprm&aa.)/sum(wprm&aa.) into :Mean_zindi_aa
from Panel(where=(annee&ap.<="&nais18" ));
quit;
您需要对产品进行评估,而不是采用MEAN。