楼主: yunnandlg
7491 5

[学习分享] SAS传输文件格式 .xpt [推广有奖]

版主

但问耕耘,莫问收获

已卖:3037份资源

院士

5%

还不是VIP/贵宾

-

威望
0
论坛币
281259 个
通用积分
649.9475
学术水平
1667 点
热心指数
1686 点
信用等级
1650 点
经验
192839 点
帖子
1937
精华
0
在线时间
2786 小时
注册时间
2010-8-28
最后登录
2026-2-3

楼主
yunnandlg 在职认证  学生认证  发表于 2021-4-21 22:16:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
1 SAS传输文件格式定义SAS传输文件格式是SAS公司(SAS InstituteInc.)公开发布的用于数据交换的***格式,扩展名为xpt。所有字符数据都存储在ASCII中,不依赖于任何操作系统。所有整数的存储都使用IBM代***风格的整数格式,所有浮点数的存储都采用IBM代***风格的双精度。用于支持在不同的操作系统和环境之间以及SAS软件的不同版本之间的数据传输。可以使用不特定的软件转换成其他各种数据格式。
2 SAS传输文件格式分类2.1 按照SAS程序分类可以使用PROC CPORT过程将SAS数据集(DATA SET)创建为SAS传输文件并使用PROC CIMPORT过程还原,但使用XPORT引擎无法还原。也可以将XPORT引擎与DATA步或PROC COPY过程联用将SAS数据集创建为SAS传输文件并还原,但使用PROC CIMPORT过程无法还原。因此,使用PROC CPORT创建的SAS传输文件格式与使用XPORT引擎创建的SAS传输文件格式之间不可相互转换。
2.2 按照SAS版本分类SAS V5传输文件格式是SAS公司早期开发的传输文件格式的代表,广泛应用于生物制药行业,与SAS V6传输文件格式兼容。SAS V8传输文件格式是SAS公司近期开发的传输文件格式的代表,扩展了SAS V5传输文件格式的功能,与SAS V7/V9传输文件格式兼容。
2.3 不同分类之间的关联PROC CPORT和PROC CIMPORT过程可创建和还原SAS V8传输文件格式,同时兼容SAS V5/V6/V7/V9传输文件格式。XPORT引擎与DATA步或PROC COPY过程联用可创建和还原SASV5传输文件格式,同时仅兼容SASV6传输文件格式。
3 SAS传输文件格式特征3.1 SAS V5/V6传输文件格式特征变量名的长度最多可达到8个字符,变量名不能完全为空;变量标签的长度最多可达到40个字符;字符变量的长度最多可达200个字节。
3.2 SAS V7/V8/V9传输文件格式特征变量名的长度最多可达到32个字符,除非使用“VALIDMEMNAME=EXTEND”选项,否则变量名不能完全为空;变量标签的长度最多可达到256个字符;字符变量的长度最多可达32767个字节。



convert the XPORT file back to a SAS dataset using proc step;
libname xptfile xport "D:\DLG\2021Receiving\20210419sas的project\DEMO_I.XPT";
libname sasfile "D:\DLG\2021Receiving\20210419sas的project\";
proc copy in=xptfile out=sasfile memtype=data;
run;

proc print data=sasfile.demo_i;run;



*convert the XPORT file back to a sas dataset using data step;
libname in xport "D:\DLG\2021Receiving\20210419sas的project\DEMO_I.XPT";
data sasfile.wave1;
set in.DEMO_I;
run;


%macro drive(dir,ext,out);                                      
%let filrf=mydir;                                       
%let rc= %sysfunc(filename(filrf,&dir));                                
%let did= %sysfunc (dopen(&filrf));                                 
%let memcnt= %sysfunc (dnum(&did));                                 
%do i = 1 %to &memcnt;                                      
%let name= %qscan (%qsysfunc (dread(&did,&i)),-1,.);                           
%if %qupcase( %qsysfunc (dread(&did,&i))) ne %qupcase (&ext) %then %do ;                     
%if ( %superq(ext) ne and %qupcase (&name) = %qupcase (&ext)) or                       
   ( %superq (ext) = and %superq (name) ne) %then %do;
   libname old xport "&dir.\%qsysfunc(dread(&did,&i))" ;
     libname new "&out" ;
     proc copy in =old out=new;
     run ;
%end;                                          
%end;
%end;
%let rc= %sysfunc(dclose(&did));                                 
%mend drive;
%drive(C:\your source folder\,xpt,C:\your destination folder\)



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:文件格式 destination receiving Data step Institute

Cause morning rolls around and it's another day of sun.
清晨不久就会来到,又是阳光明媚的一天。

沙发
sas9.4 发表于 2021-10-24 15:25:58
已有 1 人评分经验 学术水平 收起 理由
yunnandlg + 100 + 5 精彩帖子

总评分: 经验 + 100  学术水平 + 5   查看全部评分

藤椅
yunnandlg 在职认证  学生认证  发表于 2022-4-20 22:03:16
时隔刚好一年,再次用到





%macro nowpath;
        %global fullpath nowpath;   /*定义为global,为后续调用准备*/
        proc sql noprint;
                select xpath into : fullpath   /*选取全路径*/
                        from  dictionary.extfiles  /*dictionary.extfiles包含SAS路径信息*/
                        where substr(fileref,4) eq
                                (select max(substr(fileref,4))   /*max()保证选取最新(当前)路劲*/
                                from dictionary.extfiles
                                where substr(fileref,1,1) eq "#" and index(xpath,".sas") gt 0  );
        quit;

        /*选取当前路径*/
        %let nowpath=%substr(&fullpath,1,%eval(%length(&fullpath)-%length(%scan(&fullpath,-1,\))));
        %put The Full Path is: &fullpath;
        %put The Now Path is: &nowpath;
%mend nowpath;

%nowpath;


%put The Now Path is: &nowpath;



*convert the XPORT file back to a sas dataset using data step;
libname in xport "&nowpath.\pupremed.XPT";
data work;
set in.pupremed;
run;


proc export
data=work
outfile="&nowpath.\pupremed.csv"
dbms=csv replace label;
run;

板凳
yunnandlg 在职认证  学生认证  发表于 2022-4-20 22:04:46
xpt文件

pupremed.zip
下载链接: https://bbs.pinggu.org/a-3662889.html

260.38 KB

本附件包括:

  • pupremed.xpt

报纸
贝因美奶粉 发表于 2022-6-13 00:45:37 来自手机
yunnandlg 发表于 2022-4-20 22:03
时隔刚好一年,再次用到
想请教您,xpt转换过程中,中英文都有,怎么正确提取不超过200个字符?

地板
xiaoxi_23 发表于 2024-1-4 14:12:51
贝因美奶粉 发表于 2022-6-13 00:45
想请教您,xpt转换过程中,中英文都有,怎么正确提取不超过200个字符?
1 proc contents 查看数据编码 u8 or utc
2 在u8  utc sas 中, 调用sas 自带的macro 进行sas2xpt/*C:\Program Files\SASHome\SASFoundation\9.4\core\sasmacro\loc2xpt.sas*/
%loc2xpt(libref=work,memlist=test,filespec='xxxx\test.xpt' ,format=AUTO);


%* The loc2xpt macro is used to convert a list of data set members   *;
%* into a transport representation. The parameters are:              *;
%*                                                                   *;
%* libref=          indicates the libref where the members reside.   *;
%*                  The default is WORK.                             *;
%* memlist=         indicates the list of members in the library     *;
%*                  that are to be converted. The default is that    *;
%*                  all members will be converted.                   *;
%* filespec=        gives a fileref (unquoted) or a file path        *;
%*                  (quoted) where the transport file will be        *;
%*                  written. There is no default.                    *;
%* format=          the format of the transport file. Possible       *;
%*                  values are: V5 (V5 transport), V8 (V8 extended   *;
%*                  transport), AUTO (determined by data), V9 (V9    *;
%*                  extended transport).                             *;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-7 05:46