全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
953 4
2013-03-28
data e;
        input a $ b;
        if b=. then c='unknown';
        else if b=1 then c='low';
        else if b=2 or 3 then c='medium';
        else c='high';
        cards;
frank 1
joan 2
sui 2
jose 3
burt 4
kelly .
juan 5
;
run;

求助这个程序,第五行由于or后面缺少了 b=,怎么就影响到了         else c='high'; 这个语句了呢。

二维码

扫码加我 拉你入群

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

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

全部回复
2013-3-28 17:43:51
若有b=
当b为缺失值时,c='unknown'
当b为不是缺失值时,
   b为1时,c='low'
   b为2和3时,c='medium'
   b为其他值时,c='high'


若没有b=
当b为缺失值时,c='unknown'
当b为不是缺失值时,
   b为1时,c='low'
   b为除1之外的值时,c='medium'   

data e;
        input a $ b;
        if b=. then c='unknown';
        else if b=1 then c='low';
        else if b=2 or 3 then c='medium';      
        else c='high';
       /* 由于SAS中没有elseif分句,这是else+一个完整的if语句
            若没有b=,则
else c='high';没有机会被执行
      */
        cards;
frank 1
joan 2
sui 2
jose 3
burt 4
kelly .
juan 5
;
run;
二维码

扫码加我 拉你入群

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

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

2013-3-28 17:53:51
多谢楼上指点
二维码

扫码加我 拉你入群

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

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

2013-3-29 08:51:54
楼主,此题关键点不在最后一句else有没有‘b=’,而在于前面的一句
“else if b=2 or 3 then c='medium';”
这句中的条件有两个:“b=2” 和 “3”。 前面的条件只有在b的值是2时为真;而后面的“3”跟变量b是没有关系的,也就是说这个条件永远都是真的。
换句话说,这句过后,就不会在有“else”的情况了,因此“else c='high';”这句永远没有机会执行。

楼主可以将这句改为:
else if b=2 or b=3 then c='medium';
或者:
else if b in (2, 3) then c='medium';
二维码

扫码加我 拉你入群

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

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

2013-3-29 10:39:28
pobel 发表于 2013-3-29 08:51
楼主,此题关键点不在最后一句else有没有‘b=’,而在于前面的一句
“else if b=2 or 3 then c='medium';” ...
前面的条件只有在b的值是2时为真;而后面的“3”跟变量b是没有关系的,也就是说这个条件永远都是真的。
————————————————————————
这个解释很重要
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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