EXCEL“条件格式”在SAS中的实现及其应用
- 2022-11-09
- 来源/作者: Wps Office教程网/ 菜鸟图库
- 143 次浏览
最近有一个数据逻辑审核的工作,要从大量的数据中筛选出不符合要求(逻辑或业务规则)的数据,有点数据质疑的味道。(相信大家在搞调查的时候,数据清理环节经常要遇到。)筛选出的结果要标示出来,用不同颜色标示不同的异常类型。按通常的思路,这种工作无非两个办法:(1)手工看,并在excel里标示颜色来区分;(2)使用excel的条件格式。但方法(1)容易出错,“漏检”率比较高,且数据量相当大,“看是看不过来的”;方法(2)倒是可以考虑,但仔细研究后,excel的条件格式只支持三个条件(2003版本,07版本多些)。另外,用excel有诸多不便,一是数据量超过了其行数限制,二是条件格式的运算速度问题,三是结果的输出问题(筛选出来的数据还是要手工拷贝)、四是对于一些复杂的条件,还需要使用vba来实现,无法在窗体上设置。综合考虑数据量、运算速度、方便程度后,我还是选择SAS作为工具来进行。
这个程序大致思路如下:
(1)读取待审核数据文件;
(2)将逻辑规则做成数据表,按照逻辑规则筛选异常数据;
(3)给违反逻辑规则的异常数据标上颜色。
(4)分层(如分省、分县)输出异常数据为EXCEL。
(1)和(2)没什么难度,现在来谈谈(3)和(4)的实现。使用proc report过程,在输出数据集的所有变量后,写一个计算变量,如变量名为ComFormat;定义该变量为不显示:define ComFormat/noprint; 这个变量的定义计算部分内写如条件:
If 条件1 then do;
call define("var1", "style", "style=[background=red]");
这句的意思是,但条件1成立的时候,把var1单元格的背景色改为红色。
当然你也不设置背景色,可以设置字体颜色,边框,底纹等等。具体代码可以去查style的帮助文档。这里最大的优点是,可以设置多个条件,你可以写n个条件,也就是一个if接着另一个if,并且if语句还可以嵌套,多复杂的条件都可以实现。
(4)批量输出,我的数据是分层的,要求按层变量输出,如果层数多(如要按100个或1000个层输出数据)的话,也比较麻烦,我用的办法是写了一个macro,用循环来调用这个macro实现,自动批量的输出。
小结:(1)SAS可以实现类似EXCEL效果的条件格式,且条件可以非常复杂;
(2)此方法可以应用于临床研究的数据质疑,数据审核等工作;不同的颜色用于区分不同的逻辑异常类型。
(3)数据输出方便,具有一些其他软件无法比拟的优点。