sql 和 proc 之间结果的 SAS 差异意味着
SAS differences in outcome between sql and proc means
我想对宏变量中的某些变量进行加权平均。我的变量是 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_部分
得出的平均值约为 20200,这似乎是正确的
所以我的问题是
- 我在 proc sql 中遗漏了什么,以至于它确实给出了荒谬的结果?
- 有没有更好的方法获取我的宏变量&mean_zindi_aa
proc sql noprint;
select sum(zindi&aa. * wprm&aa.)/sum(wprm&aa.) into :Mean_zindi_aa
from Panel(where=(annee&ap.<="&nais18" ));
quit;
试试这个。看起来您正在尝试对 (zindi&aa. * wprm&aa.) 进行平均。如果您需要加权平均值,则上述方法应该有效。因为加权平均值 = sum(weight*variable)/sum(weights)
将您的 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;
您需要对乘积求和,而不是求均值。
我想对宏变量中的某些变量进行加权平均。我的变量是 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_部分
得出的平均值约为 20200,这似乎是正确的
所以我的问题是
- 我在 proc sql 中遗漏了什么,以至于它确实给出了荒谬的结果?
- 有没有更好的方法获取我的宏变量&mean_zindi_aa
proc sql noprint;
select sum(zindi&aa. * wprm&aa.)/sum(wprm&aa.) into :Mean_zindi_aa
from Panel(where=(annee&ap.<="&nais18" ));
quit;
试试这个。看起来您正在尝试对 (zindi&aa. * wprm&aa.) 进行平均。如果您需要加权平均值,则上述方法应该有效。因为加权平均值 = sum(weight*variable)/sum(weights)
将您的 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;
您需要对乘积求和,而不是求均值。