作者dofu1943 (那就念吧~~)
站内Statistics
标题[问题] sas的when指令问题
时间Tue Sep 11 20:27:24 2012
我的资料栏位中有一栏是英文字母
例如:
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的讯息
不知道有没有版友可以帮忙
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 36.227.118.15
1F:推 tew:那表示你的变项不是'G' 而可能是'G ' 有空栏资料 09/11 22:12
2F:→ dofu1943:那我找找看有没有指令可以将空栏位消去~~感谢指导 09/12 07:41
3F:→ yhliu:SAS 的文字变数不是该加 "$" 吗? (古老的SAS是这样的) 09/12 12:36
後来我再去看了一下,发现我的G,H,M
是另一个变数栏位用substr所取出来的
所以应该没有空栏才对
而且我用了'G '也无法顺利完成when的指令
至於yhliu大大的说法,我明天试试看,是指$g$这样吗还是$g就好?
不过我的sas是9.2版的,不知道属不属於古老的sas~~~
感谢两位大大的帮忙
※ 编辑: dofu1943 来自: 36.227.123.14 (09/12 20:48)
4F:推 tew:yhliu大的做法是在读取资料的时候 宣告是文字变项 09/12 22:02
5F:→ tew:之後应该是用不到了 09/12 22:02
6F:→ tew:if substr(varb,1,1) in ('G','H' then varc=1;else varc=0; 09/12 22:03
7F:推 tew:不过 我用你的语法 基本上是跑得出来的 除非你的资料 09/12 22:05
8F:→ tew:有大小写之分 就是 g 而非G 09/12 22:06
※ 编辑: dofu1943 来自: 36.227.121.148 (09/13 19:45)
9F:推 imaltar: varC=1 後面要加分号";" 09/14 20:08
10F:→ dofu1943:已试出来了~感恩 09/14 22:38