SAS中文论坛

标题: 运行select语句遇到一个很奇怪的问题,高手帮忙解答一下 [打印本页]

作者: shiyiming    时间: 2010-5-6 20:11
标题: 运行select语句遇到一个很奇怪的问题,高手帮忙解答一下
data a;
input x @@;
cards;
0 2 3
;
run;

data b1;
set a;
select(x);
when (x=0) y=1;
when (x=2) y=2;
otherwise;
end;
run;

本以为输出的数据集b1第二条观测中y=2,但是结果却是y=缺失值。请高手帮忙解释一下!
作者: shiyiming    时间: 2010-5-6 20:28
标题: Re: 运行select语句遇到一个很奇怪的问题,高手帮忙解答一下
[code:3vvarjdj]select(x);
        when (0) y=1;
        when (2) y=2;
end;
/*or*/
select;
        when (x=0) y=1;
        when (x=2) y=2;
end;[/code:3vvarjdj]
作者: shiyiming    时间: 2010-5-6 21:12
标题: Re: 运行select语句遇到一个很奇怪的问题,高手帮忙解答一下
谢谢,不过我知道你写的两种方法是正确的,问题是我的程序中,为什么第二行输出的y值是缺失值?因为我的程序日志并没有报错。
作者: shiyiming    时间: 2010-5-6 21:20
标题: Re: 运行select语句遇到一个很奇怪的问题,高手帮忙解答一下
to today2009
in your syntax, you are doing like that
condition x= (x=0)?, same as x = 1 because 0 =0.  no, so go to next when
condition x = (x =2)?, same as x = 0 because 0 ^= 2. yes, so get y = 2
....
because for satisfying the condition, your x has to be 0 or 1, so you got the missing value for x = 2 or 3.
作者: shiyiming    时间: 2010-5-6 21:28
标题: Re: 运行select语句遇到一个很奇怪的问题,高手帮忙解答一下
是的,多谢!




欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/) Powered by Discuz! X3.2