EN
【技术】数据导出方法汇—ODS excel
2023-09-18 15:11

在项目研究过程中,为了便于进行数据清理,加快数据审核进度,SAS程序员通常会根据DM或申办方订制的数据清单进行data listing的编程,定期运行。为了方便DM或申办方查看结果,我们通常会将运行得到的data listing以excel的格式呈现。

 

将SAS数据导出到excel的方法有很多种,常用的包括SAS DDE(Dynamic Data Exchange),ODS(Output Delivery System),proc export等等。通常情况下,DM或申办方会对输出的data listing有一些详细要求,比如字体字号颜色的设置,首行固定加筛选等。鉴于此,本文详细介绍了运用ODS导出数据集到excel的方法。

 

一般用ODS导出数据集到excel可以使用以下几种方式:

 

9-18(1).png

 

然后使用ods excel和ods excel close代码将上述语句包含在其中,具体实现方法主要包括以下几个方面:

 

首先我们应该设置好excel的输出路径以及整个excel表格的格式,我们借助options选项来进行实现:

 

(2).png

 

常用的options选项包括:

 

1、sheet_name="sheet名称"

 

根据DM或者申办方提供的spec自定义输出excel的sheet的名字。

 

2、sheet_interval="BYGROUP/PAGE/PROC/NONE/NOW/TABLE"

当不希望输出的表都写在一个sheet里时,这个选项就决定了什么时候更换excel的sheet。

 

BYGROUP:过程步中一般可以用by选项进行分组,这个选项可以让每个by选项的分组,作为一个独立的sheet,sheet的名字就是by变量的值。

 

PAGE:每一页作为一个独立sheet。

 

PROC:每个过程步的结果作为一个sheet。

 

NONE:将所有的数据都放在一个sheet里。

 

NOW:立刻生成一个新的sheet。

 

TABLE:每个表格一个sheet。

 

实际上,我们借助NONE和BYGROUP再加sheet名字重定义就可以基本实现可以随意增加新的sheet。

 

3、embedded_footnotes="yes/no"

 

指定脚注是否进行输出。

 

4、embedded_titles="yes/no"

 

指定标题是否进行输出。

 

5、absolute_column_width=''''

 

设置绝对列宽,单位可选(in cm em mm ex pt px)。

 

6、absolute_row_height=''''

 

设置绝对列高,单位可选(in cm em mm ex pt px)。

 

7、autofilter=''ALL/NONE/range/column''

 

设置筛选下拉菜单,一般用来筛选排序用的。

 

ALL:全都加筛选,它只有表格从A1单元格开始的时候才有效。

 

NONE:全都不加筛选(默认值)。

 

range:设置输入范围,例如‘3-5’,或者‘A:D’这样。值得注意的是这里的范围是相对范围,而不是绝对范围。它不是参照整个excel表来定的位置,而是参照具体表格的位置。

 

column:设置输入具体变量的位置,但只能输入一个,例如:'2'或者‘C’。与range里的情形类似,该数字是相对表格的位置,不是excel里sheet的位置。

 

(3).png

 

8、start_at=" "

 

设置表格的起始位置,例如‘B2’,‘2,2’等,默认是第一行的第一个

 

单元格。这个选项能决定表格在sheet中的位置。

 

9、contents="on/off"

 

是否创建目录,一般默认设置为‘off’。

 

10、frozen_headers="on/off/number"

 

冻结首行,默认为列标题所在行。如果输入数字则冻结对应行以上的部分,注意这个数字是绝对位置,不论表格位置在哪里,都会冻结设定的位置。

 

11、frozen_rowheaders="on/off/number"

 

冻结列,默认冻结表格最后一列的左边所有列。也可以输入数字,该数字也是绝对位置。

 

12、hidden_columns=" "

 

隐藏列,可以用数字或字母表示列,但是要注意数字和字母不能混用。例如'1,2,5,6,8-10','1-10','A:C'等。这里列位置的引用是绝对的,是按excel的sheet的位置,而不是按表位置为参照的。

 

13、hidden_rows=" "

 

隐藏行,使用方法同hidden_columns。

 

14、orientation="portrait/landscape"

 

确定sheet输出为横向或纵向。

 

确定好输出的excel格式后,我们一般会借助proc report进行详细输出,因为proc report可以针对每一个变量以想要的形式输出。

 

简单代码如下:

 

(4).png

 

其中,columns命令告诉SAS哪些变量以什么顺序被包含。如果不写这个命令,SAS就会默认把数据集中的所有变量纳入。define命令为每一个变量指定特定的输出样式。

 

最后,可能会有需求定义多个特殊定性变量或者定量变量的背景色,也就要求我们要控制好输出的excel的外观。我们可以借助ODS语句中的style=选项指定一个新的style template,从而控制输出格式。

 

例如,对变量的背景颜色进行设置时:

 

(5).png

 

我们便可以将年龄大于15岁的背景颜色输出为红色,小于等于15岁的背景颜色设置为绿色:

 

(6).png

 

其它常用的style选项还有:

 

BACKGROUND——指定表或格的背景颜色

 

BACKGROUNDIMAGE——指定表或格的背景图片

 

FONT_FACE——指定格中文字的字体(Times, ourier, Arial, 和Helvetica)

 

FONT_SIZE——指定格中文字的相对大小(1-7)

 

FONT_STYLE——指定格中文字的样式(ITALIC,ROMAN,或SLANT)

 

FONT_WEIGHT——指定格中文字的相对大小(Bold,Medium和Light)

 

FOREGROUND——指定表或格的前景颜色或文字的颜色

 

根据上文的方法和程序框架为主,我们就可以轻松得到一个想要的漂亮的报表。当然,以上只是简单展示了一些借助ODS(Output Delivery System)输出excel的简单功能,在data listing的实际工作中,有时会有对标题和脚注进行自定义设置等要求,这些都可以通过ODS实现。

 

更多具体设置,欢迎大家登录https://support.sas.com/进行查阅。

 

 

参考文献:

Paper 120-2007 Creating Multi-Sheet Excel Workbooks the Easy Way with SAS。


我们如何帮您呢?凯莱英临床(凯诺)专业团队为您尽快提供服务