作者chenshinwei (陳小偉)
看板Statistics
標題Re: [問題] SAS抓某欄變數的問題
時間Fri Mar 27 10:25:03 2009
※ 引述《chenshinwei (陳小偉)》之銘言:
: 若我有一欄變數是都有好幾個數字的,
: 但是我只想抓前面兩個數字,
: 請問指令該如何下啊?!
: ex.
: var1 var*
: 1234 12
: 23215 23
: 13542 12
: .
: .
: .
我做了下面的指令後,仍然跑不出任何數字,可是我照書本上
打出來的?!
data work.1 ;
set work.1 ;
var*=substr(var1, 1, 2) ;
run ;
因為substr好像只能理文字,所以不能處理數字……
故一直抓不出來……
所以請問一下有直接處理這個數字的方法嗎?
謝謝大家回答……
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.86.99.129
※ 編輯: chenshinwei 來自: 219.86.99.129 (03/27 10:50)
1F:推 wlsherica:想知道+1 03/27 11:31
2F:推 tew:var*是有問題的變項名 03/27 13:36
3F:推 tew:work.1 違反了檔名不得為數字的規則 03/27 13:36
4F:推 tew:我的建議是在讀資料時就處理 03/27 13:37
5F:推 tew:若你的資料只有4位數和五位數 可以用下列的方法 03/27 13:38
6F:推 tew:a=int(var1/100); b=int(var1/1000); 03/27 13:42
7F:推 tew:if 100>a>9 then var=a;else if 100>b>9 then var=b; 03/27 13:42
8F:推 tew:若位數比較多 就多寫一點 03/27 13:43
9F:→ kingbee:會有溢位與不足位的問題 1234與 12 都除上1000時取整數? 03/27 16:16
10F:→ kingbee:以及小數點..... 不過 因該都還是能處理 03/27 16:19
11F:→ tew:我還加了條件讓他取 目前只想到笨方法 03/27 16:24
12F:→ kingbee:也不是說笨 其實我以前也跑過類似 不過現在能想到是 03/27 16:44
13F:→ kingbee:1.把數字轉文字來切substr 2.強制該變項只剩兩碼 put() 03/27 16:45
14F:→ kingbee:此法也不是笨方法 或許是單純 一點的方法吧 03/27 16:46
15F:推 west1996:把sbustr那一行改成var=substr(left(var1),1,2)就行了 03/27 17:00
16F:→ west1996:一開始抓不到是因為var1是靠右對齊 03/27 17:02
17F:→ west1996:所以從頭抓只抓到blank而已 03/27 17:02
18F:→ kingbee:可是 left 也是針對文字變項 但這邊遇到的是數字變相 03/27 17:02
19F:→ west1996:沒關係 他會自動轉 還是可以吃下去 原本的type也不會 03/27 17:03
20F:→ west1996:跑掉 03/27 17:03
21F:→ kingbee:嗯嗯 在left函數 被他強制轉文字了 03/27 17:08
22F:→ kingbee:或許大家想問 不轉換文字型態時 有沒有其他方法? 03/27 17:08
23F:推 wlsherica:原來有left可用(筆記) 感謝分享~~~~ 03/27 17:49