Mean
—Proc means。
01
参考资料:
https://www.cnblogs.com/snoopy1866/p/16021137.html
https://bbs.pinggu.org/thread-6433632-1-1.html
https://www.cnblogs.com/pluuus230713/p/17729557.html
通常生成summary table的时候会对统计量进行四舍五入以达到相应的保留位数要求, 可是同一批数据,对于传入proc mean数据集的顺序不同会产生不同的结果,put出来的结果不一样,以下程序复现了这一过程
data GHDD;
infile datalines dsd missover;
input aval;
datalines;
85.3
100.7
84.7
99.3
79.3
91.3
;
run;
proc sort data=GHDD out=by1;
by aval;
run;
proc sort data=GHDD out=by2;
by descending aval;
run;
proc means data=by1;
var aval;
output out=by1_sum;
run;
proc means data=by2;
var aval;
output out=by2_sum;
run;
data by1_sum;
length putc roundputc hex $200.;
set by1_sum;
putc=strip(put(aval,14.2));
roundputc=strip(put(round(aval,0.000000001),14.2));
hex=put(aval,hex16.);
run;
data by2_sum;
length putc roundputc hex $200.;
set by2_sum;
putc=strip(put(aval,14.2));
roundputc=strip(put(round(aval,0.000000001),14.2));
hex=put(aval,hex16.);
run;
proc compare base=by1_sum comp=by2_sum listall CRITERION=0.000000001 MAXPRINT=(,);
run;
结果可以看出87.575对应的十六进制是不一样的,导致put出来的结果不一样,差异还挺大,所以还是建议可以允许误差范围内(如CRITERION=0.000000001)进行round,然后进行put为字符型。初步探索判定是proc means载入数据顺序影响了计算的结果。
尊敬的读者,首先感谢您对本篇文章的关注和阅读。在此,本小编想要说明的是,以上所述内容都是经过笔者认真整理和撰写的,但限于个人能力和知识水平等因素,难免存在疏漏或错误之处。如有不当之处,敬请包涵并指正,本小编将虚心接受您的批评与建议,并严谨修正文章。再次感谢您对本篇文章的支持与厚爱。