SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 607|回复: 2
打印 上一主题 下一主题

【求助】如何拆分用分号隔开的变量

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-3-24 18:26:13 | 只看该作者

【求助】如何拆分用分号隔开的变量

我数据集中有个变量,是几个公司的名字组成,每个公司以“;”结尾。

数据集如下
stockcd    var
1             A; B; C; D;
2              B; C; D;

我想变成这样:
stockcd    var
1             A
1             B
1             C
1             D
2             B
2             C
2             D

请教如何实现?谢谢!!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-3-25 08:34:30 | 只看该作者

Re: 【求助】如何拆分用分号隔开的变量

[code:1zpf9y2y]
data a;
    length x $5. y $20.;
    infile datalines missover ;
    input ;
    _in=trim(_infile_);
    x=strip(scan(_in, 1, ' '));
    _in=substr(_in, length(x)+1, length(_in));
    n=count(_in,';');
    do i=1 to n;
       y=strip(scan(_in, i, ';'));
       output;
    end;
    keep x y;
datalines4;
1 abd; dfef; evba;
2 bad; bea; beaera;beaf;
;;;;
run;
[/code:1zpf9y2y]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-3-25 18:07:02 | 只看该作者

Re: 【求助】如何拆分用分号隔开的变量

[code:3s2af52y]data a;
infile cards missover pad length=len ;
length A1 B1 $ 200 ;
input @01 x $varying200. len ;
A1=compress(scan(x,1,";"),compress(scan(x,1,";"),'0123456789')) ;
B1=compress(scan(x,1,";"),' 0123456789') ;
OUTPUT ;
do i=2 by 1 while(scan(x,i,";") ne ' ') ;
        B1=compress(scan(x,i,";")) ;
        output ;
end ;
keep A1 B1 ;
cards4 ;
1 A; B; C; D;
2 B; C; D;
;;;;
run ;
[/code:3s2af52y]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 10:29 , Processed in 0.067913 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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