作者tew (咖啡王子)
站内Statistics
标题Re: [问题] sas的when指令问题
时间Wed Sep 12 22:07:17 2012
※ 引述《dofu1943 (那就念吧~~)》之铭言:
: 我的资料栏位中有一栏是英文字母
: 例如:
: varA varB
: 1 G
: 2 H
: 3 H
: 4 M
: 5 G
: 我想要将varB的H和M变成1并且成为varC
: 所以我用
: select;
: when ( varB='H' or varB='M' ) varC=1
: otherwise varC=0;
: end;
: 因为有爬过文,有人提到如果要sas筛选的栏位是文字
: 例如变数b的英文字母
: 要使用' '才行
: 但我也试了,就是不行,而且varC产生的数值会全部变成0
: 另外,我也在if then delete的指令中
: 对文字的栏位使用
: 例如
: if varB='G' then delete;
: 但是却一笔都没有被删除
: 也没有产生error的讯息
: 不知道有没有版友可以帮忙
: 感谢
data a;
input varA varB $;
datalines;
1 G
2 H
3 H
4 M
5 G
;
run;
data a;
set a;
select;
when ( varB='H' or varB='M' ) varC=1;
otherwise varC=0;
end;
run;
这样跑是OK的
所以要看看你的资料和log档才有办法知道跑不出来的原因
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 36.224.42.153
1F:推 dofu1943:t大感谢您的帮忙,不过您上篇推文的语法 09/13 19:47
2F:→ dofu1943:if substr(varb,1,1) in ('G','H' then varc=1;else varc 09/13 19:48
3F:→ dofu1943:是不是加上=0)就可以了,因为想说有没有可能是我把substr 09/13 19:49
4F:→ dofu1943:和when分开写所以产生未预料到的结果,故想直接写一次语法 09/13 19:50
5F:→ dofu1943:就搞定,不过,您这篇提供的写法,我之前的确就试过了,也有 09/13 19:51
6F:→ dofu1943:注意大小写,但没有跑出来想要的东西,而且...log档也没有 09/13 19:51
7F:→ dofu1943:秀出来ERROR的讯息~~所以....蛮怪的,再次感谢t大的帮忙 09/13 19:52
8F:推 dofu1943:t大~~感谢您,我今天试出来了,感恩感恩 09/14 21:58