SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1437|回复: 10
打印 上一主题 下一主题

请教这种问题该如何解决呢??

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-9-14 20:12:46 | 只看该作者

请教这种问题该如何解决呢??

省略——————————
————————————————————————————
| id:  001------- |tell: ------------ | id: 002-----| tel:-------------|
|----------------- |18344556677 --| -------------| 13981751043   |
————————————————————————————
省略——————————
(---)代表空白,(——)代表省略..
上面给出了某个外部文件(my.txt)的一段文本信息,现遇到的问题不能把上一段文本转换成如下的数据集信息:
id             tel
001       18344556677   
002       13981751043   
当@读到001后,就不清楚该如何处理才能完整的读取信息了...希望能有大侠指点一两下....
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2011-9-15 20:07:13 | 只看该作者

Re: 请教这种问题该如何解决呢??

还是自己来顶一下!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-9-16 08:24:03 | 只看该作者

Re: 请教这种问题该如何解决呢??

继续顶,期待高手出现...
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2011-9-17 10:35:09 | 只看该作者

Re: 请教这种问题该如何解决呢??

还得继续顶着...
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2011-9-17 12:53:44 | 只看该作者

Re: 请教这种问题该如何解决呢??

要看看另外的 003 004的数据格式是怎么样的  只001 002可能不一定适用扩展程序
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2011-9-17 14:08:18 | 只看该作者

Re: 请教这种问题该如何解决呢??

[quote="tianwild":ov5ux4g5]要看看另外的 003 004的数据格式是怎么样的  只001 002可能不一定适用扩展程序[/quote:ov5ux4g5]
解决好这类指针变动问题后,扩展问题应该就好解决了吧...
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2011-9-17 21:31:25 | 只看该作者

Re: 请教这种问题该如何解决呢??

sorry 自己说的太含糊了
我的意思是id是在一行 tel在一行  还是怎么?
id:001  | id:002 | id:003。。
|  | tel1  |   | tel2  |  | tel3 |。。。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2011-9-17 21:57:08 | 只看该作者

Re: 请教这种问题该如何解决呢??

[quote="tianwild":3tjgv61o]sorry 自己说的太含糊了
我的意思是id是在一行 tel在一行  还是怎么?
id:001  | id:002 | id:003。。
|  | tel1  |   | tel2  |  | tel3 |。。。[/quote:3tjgv61o]

id标签和tel标签都在一行,而tel标签对应的值在下一行,这就需要指针@上下来回的跑动...想要的得到结果也就这个意思了吧...
| id: 001------- |tel: ------------ | id: 002-----| tel:-------------| id : 003--------| tel: ------------|
|----------------- |131xxxxxxxx --| -------------| 132xxxxxxxx |-------------------|133xxxxxxxx---|
| id :004--------| tel:------------|————————————————————————————
|-----------------| 134xxxxxxxx--|————————————————————————————

最后数据集雷同下面
id      tel
001   131xxxxxxxx
002   132xxxxxxxx
003   133xxxxxxxx
004   134xxxxxxxx
————
————
不知道有没有什么好的方法能够实现这种数据行指针的来回跳动哦...
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2011-9-17 23:23:15 | 只看该作者

Re: 请教这种问题该如何解决呢??

我的办法有点取巧。
一般不好读取都会做一些变通,比如先把整行读取 再根据规律拆分。
[code:3p1jxxwn]data _a;
        infile "d:\my.txt" dsd missover;
        format id $8. tel $11.;
        input @3 mk $2. @;
        if mk="id" then input @1 idlst : $200.;
        input tellst : $200.;
        cnt=count(idlst,"id");
        do i=1 to cnt;
        id=compress(scan(idlst,2*i-1,"|"),"id: ");
        tel=compress(scan(tellst,2*i,"|")," ");output;
        end;
        keep id tel;
run;
[/code:3p1jxxwn]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2011-9-18 08:44:15 | 只看该作者

Re: 请教这种问题该如何解决呢??

非常谢谢tianwild的回帖,取巧确实能够解决大部分问题,但问题总是多变的,不一定都适合,前边列出的文本结构我理想化过后了,如果是下边这样的话,又该如何变通呢?恳请请大侠们多指教...
(-----):代表空白
|addr1: 上海-----| addr2:北京---| addr3:广州xxxxx |
|市 xx区xx街xxx|市xxxxx区xxx路|------------------------|
|------------------ |xxx大厦xx号----|------------------------|
如上:把每个详细地址分别提出来生成三个变量字段(需要数据行指针上下移动)
--------addr1-----------------------------addr2--------------------- -----addr3
上海市 xx区xx街xxx------北京市xxxxx区xxx路xxx大厦xx号-----广州xxxxx
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-7 21:33 , Processed in 0.071686 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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