专栏首页老Z的博客.sas7bdat文件与.xpt文件批量转换

.sas7bdat文件与.xpt文件批量转换

当我们拿到的原始数据为.xpt格式时,就需要批量转换成.sas7bdat文件以便后续处理,而当我们要准备SDTM Package时,我们又要将.sas7bdat文件批量转换成.xpt文件。

  1. xpt2sas.sas
/*SAS文件路径*/
libname sdata "/home/users/zenga/code/sas/";

/*XPT文件路径*/
%let dir=/home/users/zenga/code/xpt/;

filename xpts pipe "ls &dir.*.xpt";

data _null_;
    infile xpts truncover;
    input;
    XPTFILE=prxchange('s/(.+)\/(.+)(\.xpt)/\2/',-1, _INFILE_);
    call execute('libname xptin xport "&dir.'||strip(XPTFILE)||'.xpt";'
                 ||'proc copy in=xptin out=sdata mt=all; run;');
run;

filename xpts clear;
 
  1. sas2xpt.sas
/*XPT文件路径*/
%let dir=/home/users/zenga/code/xpt/;

proc sql;
    create table vtable as
        select * 
        from dictionary.tables
        where LIBNAME='SDATA'
        ;
quit;

data _null_;
    set vtable end=eof;
    MEMNAME=lowcase(MEMNAME);
    call execute('libname temp xport "&dir.'||cats(MEMNAME)||'.xpt";'
                 ||'data '||cats(MEMNAME)||'(sortedby=_null_ label="'||cats(MEMLABEL)||'"); set sdata.'||cats(MEMNAME)||'; run;'
                 ||'proc copy in=work out=temp mt=data; select '||cats(MEMNAME)||'; run;');
    if eof then call execute('libname temp clear;');
run;
 

对于第一个程序xpt2sas.sas,获取某一路径下某种文件的文件名也可以用CALL SYSTEM,不过这种方法会产生一个临时文件,所以推荐使用FILENAME PIPE

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 创建SAS Format的几种方法

    不管是做AD还是TFL,我们经常会碰到要创建Format。当Format中条目不多时我们可以直接用PROC FORMAT来创建,但是当条目很多时,这种方法就不方...

    专业余码农
  • SAS成语接龙

    今天无意间翻到3年前回复过的一个帖子:用SAS做成语接龙。编程思路如下:首先导入成语大全,提取首尾汉字,将所有成语放入哈希表中,然后将成语最后一个汉字去哈希表中...

    专业余码农
  • 正则表达式模式修饰词

    即匹配和替换,缩写为m//和s///(或s###),对应到SAS中的函数就是PRXMATCH和PRXCHANGE,即m/PATTERN/和s/PATTERN/R...

    专业余码农
  • centos内核的删除或修改

    用户14527
  • 史上最大服务中断事故:全球互联网流量下降3.5%只因一次配置错误?

    近日,美国互联网服务提供商 CenturyLink 因数据中心的错误配置导致多个网站受到影响。据了解,这次事故是 BGP 路由配置错误引起的连锁反应,受到影响的...

    深度学习与Python
  • Vision sensors 的相关内容

    Orthographic projection-type正投影式:正投影式视觉传感器的视场为矩形。它们非常适合于近距离红外传感器,或激光测距仪。

    六四零
  • H3C--nat,dhcp,内部服务器

           路由器做为DHCP服务器,为内网设备分配IP,由acl实现访问控制,再通过nat与acl的关联实现内部ip的访问控制,通过网关E0接口,并将其转换...

    py3study
  • 如何避免相互依赖的系统间耦合

    两个应用熊中需要远程传递数据,常规的做法是直接进行远程调用,使用 Http,或者 其他 RMI 方式进行调用,但是这种方式将系统耦合起来,一旦被调用的系统产生了...

    王小明_HIT
  • 机器人都会做饭了,还要男朋友作甚?

    镁客网
  • 用rz,sz命令在windows和linux间传送文件

    经常需要在windows和linux之间上传和下载文件。使用ftp工具来工作有时候会觉得比较麻烦,切来切去的十分不方便,要是能够直接在终端进行上传和下载就好了...

    帘卷西风

扫码关注云+社区

领取腾讯云代金券