SAS在sql和proc之间的结果差异意味着

时间:2015-06-25 15:51:44

标签: sas sas-macro proc-sql

我希望宏变量中的某个变量加权平均值。我的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&ap;
run;

然后是数据_null_ part

产生的平均值 20200 似乎是正确的

所以我的问题是

  • proc sql我缺少什么,所以它确实给出了荒谬的结果?
  • 有更好的方法来获取我的宏变量&amp; mean_zindi_aa

2 个答案:

答案 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。