2024-06-11 初级SAS学习笔记17(export data)

        利用SAS创建输出的数据格式主要分为下列三种形式:

1)以“,”分隔的CSV或txt文本格式,

2)带格式的形式如HTML、RTF、或XML

3)其他软件需要的格式

SAS创建常用的电脑文件如Microsoft excel、Microsoft Access、dBase、Paradox、SPSS、Stata和JMP,除JMP格式外其余格式则必须安装这些文件的SAS/ACCESS接口来实现输出;JMP文件格式在base sas可实现输出;如果没有安装SAS/ACESS的文件接口,也可以使用DDE(dynamic data exchange)在SAS中实现文件输出。

1) proc export 

        适用于windows或者unix操作系统,与EXPORT WIZARD等同,EXPORT WIZARD是用户图形交互界面可点击导出SAS数据集;基本格式如下:

        proc export data=data-set outfile="filename"  dbms=;  

 在filename的文件名后缀须与dbms设置的文件格式相匹配,如果不匹配以DBMS=指定文件格式对应的分隔符为准,下面是DBMS=和文件名后缀示例:

        文件格式                 文件名后缀                    DBMS 

        逗号分隔文件            .csv                              CSV

        TAB键分隔文件        .txt                                 TAB

        空格分隔文件                                                 DLM

        用户还可以自定义分隔符,如果用户自定义分隔符,则不论用上述哪种文件名后缀或者哪种DBMS都可以实现,实现的文件分隔符以自定义的格式为准;

如:proc  export data=hotels outfile="c:\myrawdata\hotels.txt"

                dbms=DLM REPLACE;

                delimiter="&";

        run;

导出的文件将保留SAS数据集中定义格式。

使用proc export 输出Microsoft excel 文件,基本格式如下:

        proc export data=data-set  file="filename"

                                dbms=identifier   replace;

                                sheet="sheet_name"   ;

run;

dbms的取值有EXCEL,XLS,XLSX;

sheet="sheet-name"表示对导出数据集的sheet自定义名称,而非默认的数据集名称;

所以我们通过提前给sheet命名,在多个proc  export中使用同一个文件名,实现在一个excel文件内导出多个数据集至多个sheet。

replace 表示对于有相同文件名或者sheet名的内容会实现新的导出会覆盖旧的导出。

但是与PROC EXPORT导出至分隔符文件内不同的是,数据集导出至excel的不保留sas设置的数据格式,即format语句对于proc  export 无用。

2.DATA STEP 输出文件

        我们使用data step的infile 和input 语句来读入外部文件变成SAS数据集,我们也可以使用file和put语句 来导出sas数据集至外部文件,来实现比proc  export在数据内容和格式更多控制,基本过程如下:

        

put 语句同input语句一样可以有list(输出变量名: input  name $   age   )、column(第几列-第几列输出: input name $ 1-10 age 11-13 )、formattted(输出格式:input name $10  age 3.) 三种形式;如果使用list的形式,sa会默认变量名之间的分隔符为1个空格;如果在此种格式下需要更换分隔字符 ,需要在file 语句中连用dsd 和DLM="分隔符"。

如果使用column 或者formatted格式输出,用户可以定义输出变量的位置,同input相同使用指针来控制输出的位置:

@n    表示第n列

+n      表示在现有的位置上+n列

/         表示跳转至下一行

#n      表示跳转至第n行

@      表示输出完成继续在本行保持

除了输出变量名,我们还可以在变量名之间插入用引号引用的字符。

值得注意的是引用的字符与前一个变量以分隔符相分隔,与后面的变量默认不分隔。该方法导出的数据集文件不含有变量名。

以下是使用input 和infile 以及put和file导入和导出数据集的示例,格式如下:

libname  travel  "c:\mysaslib";

data travel.golf;

        infile  "c:\myrawdata\golf.dat";

        input  Coursename $18.  NumberofHoles   par Yardage GreenFees;

run;

data _null_;

        set travel.golf;

        file  "c:\MyRawData\Newfile.dat";

        put  CourseName  "Golf Course"  @32   GreenFees  Dollar7.2   @40  "Par  " Par;

run;

@32表示从第32列开始输出下个变量

结果如下:

 

                                

 3.使用ODS导出数据集文件

        使用ODS导出数据集时使用ODS确定需要输出的目的文件,CSV或HTML,然后使用proc print 来打印需要导出的数据集实现数据集导出,在proc  print 中可以使用missing 来实现数值缺失打印空缺而非点值".";使用NOOBS来实现不打印OBS列。

a)数据导出至CSV文件基本格式:

        ods  csv  file="filename" ;

                proc  print;

                        run;

        ods csv close;

        ods  csv  不输出title和footnote,字符全部以引号引用,如果需要输出title和footnote则需要使用ods  csvall命令。

b)数据导出至html文件基本格式

             ods html  file="filename "或者body="filename" style=;

                        proc print;

                                run;

               ods  html close;

如果不设置style= 的话则使用默认的样式,如果不需要样式则可以使用ODS CHTML。

        

        

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值