y********e 发帖数: 363 | 1 我有一个变量X,字符型,内容基本都是比率,比如
1:10
1:20
1:160
1:80
...
我现在用SCAN取冒号后边的数值,为了防止有2:AAA这种错误纪录被读入,我用‘1:’
做分隔符,用SCAN,如:
Y=SCAN(X,1,'1:')这时候,凡是冒号后是1开头的数值都被削去了1,比如1:10被读成0
,1:160被读成了60。。。但对于1:80这类非1开头的就没事,1:20被读成20,1:80
被读成80。。。
想问问这是为啥?怎么避免? | d******9 发帖数: 404 | 2 Because SAS treats both 1 and : as delimiters, so they are skipped.
In your case, you should use:
Y= SCAN(X,2,':');
Then you will get
Y=10
20
160
80 | a****t 发帖数: 1007 | 3 I think you can try substr.
y = substr(x,3);
成0
80
【在 y********e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 我有一个变量X,字符型,内容基本都是比率,比如 : 1:10 : 1:20 : 1:160 : 1:80 : ... : 我现在用SCAN取冒号后边的数值,为了防止有2:AAA这种错误纪录被读入,我用‘1:’ : 做分隔符,用SCAN,如: : Y=SCAN(X,1,'1:')这时候,凡是冒号后是1开头的数值都被削去了1,比如1:10被读成0 : ,1:160被读成了60。。。但对于1:80这类非1开头的就没事,1:20被读成20,1:80
| y********e 发帖数: 363 | 4 分别当作delimiter啊,明白了。多谢。
【在 d******9 的大作中提到】![](/moin_static193/solenoid/img/up.png) : Because SAS treats both 1 and : as delimiters, so they are skipped. : In your case, you should use: : Y= SCAN(X,2,':'); : Then you will get : Y=10 : 20 : 160 : 80
| y********e 发帖数: 363 | 5 嗯,多谢。
【在 a****t 的大作中提到】![](/moin_static193/solenoid/img/up.png) : I think you can try substr. : y = substr(x,3); : : 成0 : 80
|
|