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