SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 826|回复: 4
打印 上一主题 下一主题

按照指定字符拆分

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-9-8 11:18:45 | 只看该作者

按照指定字符拆分

举例如下:
[code:hpyezk89]data want;
input ch $20.;
cards;
3*2.5*3
1*1*0.7
1.5*1.5*1.5
1.5*1*1
1.5*1*0.5
1.5
1.3*0.7*0.5
1.5*1*0.8
0.7*0.5
;
run;
/* 想以'*' 为分割标记,分为三个变量,x1,x2,x3,*/
/* 若有0.7*0.5 则表示为x1,x2                 */
/* 若有1.5      则表示为x1;                 */[/code:hpyezk89]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2011-9-8 12:11:41 | 只看该作者

Re: 按照指定字符拆分

有一个语句可以参考,但有点欠缺。
[code:1ddqlfnj]b1=input(substr(_col22,1,index(a,'*')-1),8.); [/code:1ddqlfnj]
但问题是在“*”分割的字符不是等长度的,所以以上语句没法使用,还望大侠回复!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-9-8 18:59:38 | 只看该作者

Re: 按照指定字符拆分

用scan函数
x1=scan(ch,1,"*");
x2=scan(ch,2,"*");
...
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2011-9-11 10:43:18 | 只看该作者

Re: 按照指定字符拆分

[code:2vh3hxzo]proc sql noprint;
        select max(countc(ch,'*'))+1 into :n_max from want;
quit;
data result;
        set want;
        n=countc(ch,'*')+1;
        array x{&n_max.} $32;
        do i=1 to n;
                x(i)=scan(ch,i,'*');
        end;
        drop n i;
run;[/code:2vh3hxzo]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2011-9-30 13:44:40 | 只看该作者

Re: 按照指定字符拆分

为什么不一开始在读取观测的时候处理了?
[code:8vauqsu4]
data want;
        infile cards dlm='*' truncover;
        input x1 x2 x3 ;
cards;
3*2.5*3
1*1*0.7
1.5*1.5*1.5
1.5*1*1
1.5*1*0.5
1.5
1.3*0.7*0.5
1.5*1*0.8
0.7*0.5
;
run;[/code:8vauqsu4]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-5-7 20:57 , Processed in 0.161483 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表