作者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