[問題] sas的when指令問題

看板Statistics作者 (那就念吧~~)時間11年前 (2012/09/11 20:27), 編輯推噓4(406)
留言10則, 4人參與, 最新討論串1/2 (看更多)
我的資料欄位中有一欄是英文字母 例如: 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

09/11 22:12, , 1F
那表示你的變項不是'G' 而可能是'G ' 有空欄資料
09/11 22:12, 1F

09/12 07:41, , 2F
那我找找看有沒有指令可以將空欄位消去~~感謝指導
09/12 07:41, 2F

09/12 12:36, , 3F
SAS 的文字變數不是該加 "$" 嗎? (古老的SAS是這樣的)
09/12 12:36, 3F
後來我再去看了一下,發現我的G,H,M 是另一個變數欄位用substr所取出來的 所以應該沒有空欄才對 而且我用了'G '也無法順利完成when的指令 至於yhliu大大的說法,我明天試試看,是指$g$這樣嗎還是$g就好? 不過我的sas是9.2版的,不知道屬不屬於古老的sas~~~ 感謝兩位大大的幫忙 ※ 編輯: dofu1943 來自: 36.227.123.14 (09/12 20:48)

09/12 22:02, , 4F
yhliu大的做法是在讀取資料的時候 宣告是文字變項
09/12 22:02, 4F

09/12 22:02, , 5F
之後應該是用不到了
09/12 22:02, 5F

09/12 22:03, , 6F
if substr(varb,1,1) in ('G','H' then varc=1;else varc=0;
09/12 22:03, 6F

09/12 22:05, , 7F
不過 我用你的語法 基本上是跑得出來的 除非你的資料
09/12 22:05, 7F

09/12 22:06, , 8F
有大小寫之分 就是 g 而非G
09/12 22:06, 8F
※ 編輯: dofu1943 來自: 36.227.121.148 (09/13 19:45)

09/14 20:08, , 9F
varC=1 後面要加分號";"
09/14 20:08, 9F

09/14 22:38, , 10F
已試出來了~感恩
09/14 22:38, 10F
文章代碼(AID): #1GJouk-Z (Statistics)
文章代碼(AID): #1GJouk-Z (Statistics)