SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1165|回复: 6
打印 上一主题 下一主题

读入剩下所有文字到一个变量?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-1-31 02:59:51 | 只看该作者

读入剩下所有文字到一个变量?

文本数据
infile

like this:
[quote:3e7p4zhp](600072)中船股份:2007年年度业绩预增公告
根据中船江南重工股份有限公司财务部门的初步测算,预计2007年年度净利润较2006年同期增长550%以上(上年同期未按新会计准则调整的净利润为1347.03万元),具体数据将以公司于2008年4月12日披露的2007年年度报告为准。.... [/quote:3e7p4zhp]


(600072)固定 有时会出现前面的括号缺失
中船股份固定 8字节
2007这类的信息前必有 [b:3e7p4zhp]:[/b:3e7p4zhp]冒号 或 [b:3e7p4zhp]- [/b:3e7p4zhp]

问题:
1、从2007年开始直读到结尾作为一个变量的option
2、文件目录结构:日期\分类\*.txt
上级目录名的sas命令是什么呢? 我想用日期做变量

谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-2-1 11:46:16 | 只看该作者

Re: 读入剩下所有文字到一个变量?

关于第2个问题,sas有个pathname命令,是获取全路径的,不知道对你有没有帮助
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-2-1 12:28:57 | 只看该作者

Re: 读入剩下所有文字到一个变量?

关于第1个问题,SAS没有option控制一直读到结束,碰到回车符就会认为该变量读取结束了。所以只能分多行读取,然后根据一定逻辑,如关键字(600XXX)来拼接多行字符串。
或者也可以查询一下eof,ignoredoseof等options,看看有没有需要的。以前也有些帖子是讲述如何读取整行的,也可以参照一下。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2008-2-1 18:58:58 | 只看该作者

Re: 读入剩下所有文字到一个变量?

shiyiming ,还是你nice!

谢谢 mzmxly81
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2009-3-16 19:15:58 | 只看该作者

Re: 读入剩下所有文字到一个变量?

意外之间看到这个帖子,想到作text miner的XDJM们可能需要解决这个问题,饭后写了一点咚咚仅供参考~
[code:1l1tizpu]data mydataset;
        length line tmp $20000.;
        infile  "myfile"  truncover end=lst filename;
        input line $ 1-20000;
        do until(lst);
             input tmp $ 1-32767;
             line=strip(line)||'0a'x||strip(tmp);
        end;
        keep line filename;
run;[/code:1l1tizpu]如果将这里的myfile 改为 pipe输入,那么就可以将N个dictionary下的N*M个文件全部装进一个table中,每个文件一个cell..
比如
[code:1l1tizpu]filename fl pipe "dir /b /mypath";
data mydataset;
        length line tmp $20000. file $200.;
        infile fl ;
        input file;
        file="/mypath/"||file;
        infile  filevar=file  truncover eov=lst ;
        input line $ 1-20000;
        do until(lst);
             input tmp $ 1-32767;
             line=strip(line)||'0a'x||strip(tmp);
        end;
        keep line filename;
run;[/code:1l1tizpu]
仅供参考~~~
继续工作~~~赫赫
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2009-3-16 22:38:04 | 只看该作者

Re: 读入剩下所有文字到一个变量?

谢谢!pipe绝对是好方法,加threads可以成倍的提高效率。
对于文本挖掘方面,SAS最近新合作的公司擅长自然语言处理,之前还做过CAT(计算机辅助翻译),应该比textminer前景更好。 <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2009-3-17 14:14:14 | 只看该作者

Re: 读入剩下所有文字到一个变量?

hehe这方面我就不太熟悉了,我从来没有做过真正的text ming..原来就用一个Lucene做个一个字典,以后就费了~~
pipe确实不错~~~,加上connect作multi threads~~。
原来没有connect的时候,我在一个WIN2003的服务器上做了个 task command的quasi - multi threads 小程序,Monte Carlo..
赫赫~~~
hardcoding 还是不错的。。加上DDL就行~~~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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