SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 4806|回复: 0
打印 上一主题 下一主题

sas pipe

[复制链接]

6

主题

16

帖子

86

积分

超级版主

Rank: 8Rank: 8

积分
86
跳转到指定楼层
楼主
发表于 2014-9-9 15:10:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、介绍pipe
    首先pipe是什么,它是SAS中两中处理间的信息传输管道,其中存在两种Pipe,即:Unnamed pipe和Named pipe。后者主要处理SAS和其他软件间的信息交流,前者则可以用来调用外部代码或在不创建中间文件情况下更改输入、输出、报错等信息。这是利用主程序和子程序间的关系,其中filename 语句下面的是子程序。Unnamed Pipe 与filename一起使用可以用来解决涉及外部文件的很多问题,姑且算作Filename语句的一种延伸吧,语法如下:
      filename pipe “”;
例如:
filename temp pipe "dir F:\南昌项目\全省气象资料\ETO-1981-2012\ETO*.txt /b";
data name;
  infile temp truncover;
  input name $2000.;
run;
proc print data=name;
run;



此处强调两点:
1、这里现实的是相对路径,如果需要绝对路径,则代码换成:
filename temp pipe "dir F:\南昌项目\全省气象资料\ETO-1981-2012\ETO*.txt /b/s";
相关的dos中dir命令见链接:
http://www.360doc.com/content/09/1213/13/5029_11012595.shtml

2、需要在infile后面添加truncover

二、实现批量导入
(1)利用两个input全部导入,对于命名没规律的文件比写append方法效率高
filename dir
pipe pipe “dir c:\Temp\crackman”;/*建立管道,获取文件夹crackman下文件的信息并放在dirpipe中,dirpipe是一个
虚拟的文件,随着pipe的建立而建立,pipe的断开而消失/
data ReadPipe(drop=DateString);
infile dirpipe firstobs=8 truncover;
input DateString $ 1-10 @;
if DateString=” ” then stop;
input @1 Date : yymmdd10. Time & : time.
Bytes : comma. FileName : $64.;
if Bytes ge 0;
format Date mmddyy10. Time timeampm8. Bytes comma18.;
run;
proc print data=ReadPipe;
title1 “Files identified through unnamed pipe”;
run;
filename dirpipe clear;
(2)、利用宏将文件导入
filename indata pipe "dir d:\sas\xml /b";
data vname;
length fname $20.;
infile indata truncover;
input fname $20.;
call symput ('nvars',_n_);
run;
%macro want;
%do i=1 %to &nvars.;
        data _null_;
                set vname;
                if _n_=&i;
                call symput ('file',fname);
        run;
        data tmp;
                infile "d:\sas\xml\&file." firstobs=2;
                input x y z;
        run;
        proc datasets;
                append base=want data=tmp;
        quit;
%end;
%mend;
%want


参考:利用filename and pipe读取文件
跟crackman读sas程序(121)–如何获得一个文件夹下所有文件的基本信息  http://crackman.net/?p=1212


分享到:  微信微信
收藏收藏
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 08:07 , Processed in 0.107696 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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