全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1043 3
2012-11-20
求高手解读一下这两个代码

data revenue2;
input Day : $3.
Revenue : dollar6.;
Total + Revenue;
format Revenue Total dollar8.;
datalines;
Mon $1,000
Tue $1,500
Wed .
Thu $2,000
Fri $3,000
;
run;

data revenue1;
retain Total 0;
input Day : $3.
Revenue : dollar6.;
Total = Total + Revenue; /* Note: this does not work */
format Revenue Total dollar8.;
datalines;
Mon $1,000
Tue $1,500
Wed .
Thu $2,000
Fri $3,000
;
run;

两个跑出来的TOTAL值不一样

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-11-20 17:32:55
"data revenue2"中的“Total + Revenue;” 相当于:
  retain total;
   total=sum(total,revenue);

所以,这两个DATA步的区别就是SUM()函数和a+b两种求和方式在遇到缺失值时的区别。
SUM(): Returns the sum of the nonmissing arguments.,只有当所有的参数都缺失时结果才为缺失值。
而a+b: 只要a或者b中有一个是缺失的,结果就是缺失的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-11-20 17:36:44
差别在于赋值语句(Total = Total + Revenue;)碰到缺失值时,结果为缺失值,而Sum语句(Total + Revenue;)将缺失值当成0来处理!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-11-20 18:51:00
看书不仔细,书上有这个解释

variable + increment;

.. Variable is retained
.. Variable is initialized at 0
.. Missing values (of increment) are ignored

________________
多谢楼上两位解答
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群