全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7083 5
2021-04-21
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\)



二维码

扫码加我 拉你入群

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

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

全部回复
2021-10-24 15:25:58
二维码

扫码加我 拉你入群

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

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

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;
二维码

扫码加我 拉你入群

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

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

2022-4-20 22:04:46
xpt文件
附件列表

pupremed.zip

大小:260.38 KB

 马上下载

本附件包括:

  • pupremed.xpt

二维码

扫码加我 拉你入群

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

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

2022-6-13 00:45:37
yunnandlg 发表于 2022-4-20 22:03
时隔刚好一年,再次用到
想请教您,xpt转换过程中,中英文都有,怎么正确提取不超过200个字符?
二维码

扫码加我 拉你入群

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

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

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).                             *;

二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群