本文作者:sukai

编程mis(编程免费自学网站)

sukai 2023-11-29 120

  本文转自SAS知识 (ID: SASadvisor),摘自《深入解析SAS — 数据处理、分析优化与商业应用 》

  回复「朝阳35处」可查看「说人话的大数据」系列合辑

  

  SAS编程基本概念的前两篇文章介绍了SAS逻辑库和SAS数据集,今天介绍SAS逻辑库和数据集管理、系统选项和程序结构。

  SAS逻辑库和数据集管理

  SAS逻辑库和数据集可以通过SAS程序语句来进行管理,例如LIBNAME语句、DATA步、DATASETS过程、APPEND过程和CONTENTS过程等。DATA步提供了许多功能来对SAS数据集进行处理(后面的文章会具体介绍)。

  LIBNAME语句

  LIBNAME的LIST选项可以将一个或多个SAS逻辑库属性打印在日志中。其基本形式如下:

  LIBNAME逻辑库引用名 LIST;

  LIBNAME _ALL_ LIST;

  LIBNAME的CLEAR选项用于清除一个或多个逻辑库引用名与SAS逻辑库之间的关联关系。清除了关联关系的逻辑库引用名在SAS会话中不再有效。其基本形式如下:

  LIBNAME逻辑库引用名 CLEAR;

  LIBNAME _ALL_ CLEAR;

  LIBNAME还有更多对SAS逻辑库的管理功能,可参考SAS帮助文档进行学习。

  CONTENTS过程

  CONTENTS过程用于显示数据集的描述信息内容,并打印SAS逻辑库的目录。通常,CONTENTS过程和DATASETS过程的CONTENTS语句相同。该过程的基本形式为:

  PROC CONTENTS DATA=数据集名称;

  RUN;

  在前面的文章中已经使用CONTENTS过程显示了数据集属性内容,如图2.3所示。

  DATASETS过程

  DATASETS过程提供了强大的SAS数据文件管理功能,对数据集而言,除了可显示数据集的描述信息外,还可用于追加观测、修改变量名、删除数据集等。对于该过程,可通过SAS帮助文档进行学习。

  当需要修改一个数据集的变量属性时,使用DATASETS过程可以在不读取数据集观测的情况直接修改变量属性。虽然也可以通过使用DATA步的SET语句基于一个数据集创建新的数据集,并为新数据集指定不同的属性来实现相同的功能,但这样SAS会读写所有的观测,造成资源浪费,当数据集较大时会非常耗时。

  SAS资源管理器

  此外,我们也经常会通过SAS窗口环境的SAS资源管理器来管理逻辑库以及逻辑库中的SAS文件。这里主要介绍SAS提供的对SAS逻辑库和数据集的一些实用管理操作,具体操作可以根据各个菜单项对应的向导提示步骤完成,这里不再赘述。

  (1)逻辑库管理

  启动SAS窗口环境,双击SAS资源管理器窗口的SAS逻辑库图标,显示该SAS会话可用的所有逻辑库,包括临时逻辑库WORK、系统逻辑库sashelp、sasuser和用户定义的逻辑库。在“逻辑库”目录下,可以通过菜单文件= 新建,或右键点击空白处从浮动菜单选择新建来创建新逻辑库。新建逻辑库的对话框如图2.7所示。这里与通过程序语句定义SAS逻辑库一样,需要指定逻辑库引用名,引擎、和物理路径信息。还可以通过勾选“启动时启用”来指定该逻辑库在Base SAS启动时即创建并启用,或在“选项”输入框里指定相应选项。

  

图2.7 新建逻辑库对话框

  右键点击刚才创建的逻辑库saslib,会显示该逻辑库可用选项的浮动菜单。用户定义的逻辑库浮动菜单如图2.8所示。可以通过该浮动菜单实现:在该逻辑库中查找成员、为该逻辑库添加新的成员、删除该逻辑库和显示其属性。

  

图2.8 逻辑库浮动菜单

  (2)数据集管理

编程mis(编程免费自学网站)

  通过SAS资源管理器可以浏览逻辑库的内容,在浏览时,可以选定逻辑库的数据集(表)进行操作。可通过浮动菜单完成如下操作:查看数据集、将数据集导出为Excel文件、复制、删除、重命名SAS数据集和创建副本等,如图2.9所示。

  

  图2.9 数据集操作

  VIEWTABLE窗口

  在资源管理器窗口双击SAS数据集,会在VIEWTABLE窗口中打开当前SAS数据集。默认打开方式为浏览模式,该模式能保护数据不会被更改。在浏览模式下,可以定制数据集视图,例如,排序、改变列显示颜色和字体、显示标签或删除添加变量。选中数据集的一个变量(列),右键显示的浮动菜单如图2.10所示。可选择不同的菜单项,通过菜单项向导完成这些定制功能。

  

图2.10定制查看数据集的视图

  在当前活动窗口为VIEWTABLE窗口时,可以通过菜单将浏览模式修改为编辑模式,选择编辑=编辑模式。在该模式下可以进行在该窗口修改数据值、按列排序等操作,并且使用菜单文件= 保存或另存为,来修改该数据集或建立新的SAS数据集。

  SAS 系统选项

  SAS的复杂之处在于存在众多选项(option),读者需要留心掌握。根据SAS选项出现的位置、功能和作用范围来区分,一般分为系统选项、数据集选项和语句选项(即在语句中出现的选项)。后面文章会不断地介绍这些选项,建议读者针对这些选项的类别和用法进行总结。

  SAS系统选项是影响整个会话过程中SAS程序处理或交互式SAS会话的指令。SAS系统选项所控制的内容包括SAS输出的外观、SAS对所使用文件的处理形式、SAS数据集中观测的处理形式(例如OBS选项),SAS初始化特性(例如MEMSIZE选项),以及SAS如何与主机操作系统交互等。系统选项被指定时即开始产生影响,直到其被改变。

  数据集选项是为数据集操作指定的选项,应用于其所作用的SAS数据集。有些数据集选项有对应的系统选项或LIBNAME选项,例如选项OBS=。

  在下面的代码中,前一个PROC过程受数据集选项OBS的控制,而后一个PROC过程受系统选项OBS的控制。

  options obs=10;

  title "数据集选项OBS=生效打印5条观测";

  proc print data=sashelp.shoes (obs=5);

  run;

  title "系统选项OBS=生效打印10条观测";

  proc print data=sashelp.shoes;

  run;

  两个PRINT过程分别打印sashelp数据集的前5条和10条,结果如图2.11所示。

  

图2.11 数据集选项和系统选项

  语句选项出现在SAS语句中,用于控制该语句的行为。全局语句中的选项会有更加广泛的影响,例如LIBNAME=语句选项影响特定逻辑库的所有执行。如果LIBANME语句的ACCESS选项值为ONLY,则对该逻辑库中的所有数据集都不能进行更新或写入操作。

  指定SAS系统选项

  SAS系统选项可通过多种方式指定。常见的指定SAS系统选项的方法有:通过启动SAS时的命令行和配置文件指定,或者SAS启动后通过OPTIONS语句或SAS系统选项窗口指定。

  在UNIX环境下,如果启动SAS时通过命令行将临时逻辑库WORK的物理路径设置为/SASWORK,则SAS的启动命令行如下:

  #/opt/SASHome/SASFoundation/9.4/sas -work /SASWORK

  如果是通过配置文件指定的,则将该选项写入配置文件中。SAS启动后在OPTIONS语句中指定系统选项的形式如下:

  OPTIONS 选项1 选项2 选项3 …;

  前面已经给出了通过OPTIONS语句给出指定OBS=选项值的示例。

  关于通过SAS系统选项窗口指定和查看系统选项值的情况,会在下面“SAS系统选项窗口”中介绍。

  查看系统选项值

  如果数据集选项和语句选项出现在当前起作用的位置,可以很容易查看。但是,要看到当前起作用的SAS系统选项值和当前值是通过何种方式设置的就没那么直接了,因为SAS为系统选项提供了默认值并且有多种方式可以设定系统选项值。对此,可以使用OPTIONS过程、GETOPTIONS函数或SAS系统选项窗口指定选项名称来查看。

带VALUE选项的OPTIONS过程将指定选项的值、范围及该值如何设置的信息打印到日志窗口的基本形式如下:

  PROC OPTIONS OPTION=选项名称 VALUE;

  RUN;在SAS窗口提交如下代码:

  options obs=20;

  proc options option=obs value;

  run;

  在日志窗口打印的输出如图2.12所示。从该图可以看出,OPTION过程打印该选项值为20,并显示该值是通过OPTIONS语句设置。

  

图2.12 OPTIONS过程打印的选项信息

  不使用选项VALUE时会仅返回该选项值。

将GETOPTION函数作为%SYSFUNC宏函数的参数,从而获取系统选项设置的基本形式如下:

  %PUT %SYSFUNC(GETOPTION(选项名称));

  在SAS窗口提交如下代码:

  options obs=20;

  %put %sysfunc(getoption(obs));

  在日志窗口打印输出如图2.13所示。从该图可以看出,选项OBS的值为20。

  

图2.13 GETOPTION函数的选项信息

  在GETOPTIONS函数中还可添加其他参数,显示指定选项的其他信息,例如默认值、启动时的值,以及该值如何设置等。

  SAS系统选项窗口

  通过SAS系统选项窗口菜单可以查看和管理SAS系统选项。选择菜单工具= 选项= 系统,会打开“SAS系统选项”窗口,该窗口对SAS系统选项进行了分组,如图2.14所示。可以通过选项组的浮动菜单展开该分组或在该分组中查找系统选项。展开选项组、子选项组直到右侧窗口出现具体的系统选项,可通过具体选项的浮动菜单修改该选项值或将该选项值重置为默认值。

  

图2.14 SAS系统选项窗口

  在左侧窗口点击日志和过程输出控制= 过程输出,右侧窗口会显示“过程输出”组的系统选项,如图2.15所示。右键点击要修改其值的系统选项,通过浮动菜单修改该选项值或将该选项值重置为默认值。例如,右键点击“Center”,选择“修改值”,选择在“修改值”对话框选择或设置新值,点击“确定”保存该选项值。

  

  图2.15 在SAS系统选项窗口修改系统选项值

  SAS 程序结构

  SAS程序用于访问、管理、分析和展现数据。其基础组成部分是DATA步和PROC步,PROC步又称为SAS过程。一个SAS程序可包含以任意顺序组合的多个DATA步和多个PROC步。

  DATA步通常用于创建和操作数据集,还可用于产生定制的报表。例如,DATA步可用于计算值、检查并修正数据中的错误、将数据存储到SAS数据集中便于下次使用,以及通过对存在的数据集取子集、合并和更新产生新的数据集。DATA步由关键字DATA开始。

  PROC步是一些预先写好的例程,不同的PROC步其功能不同。PROC步能够用来分析和处理SAS数据集中的数据,并以适当的形式展现数据和信息。有些PROC步会创建包含该过程结果的新SAS数据集。PROC步可列出、排序和汇总数据,也可以产生描述性的统计量,并对其进行分析和优化,从而创建汇总报告、产生图表等。PROC步由关键字PROC开始。

  SAS程序还包含SAS语句,每条SAS语句通常以SAS的关键字开始,并总是以分号结束。DATA步和PROC步通常包含多条语句。SAS语句的形式很自由,可以在一行的任何地方开始和结束,每条语句可跨越多行、多条语句也可以在同一行。语句中的“词”以空格或特殊字符分开。SAS语句不区分大小写,但是在大多数时候,在引号中的文本是区分大小写的。

  下面通过示例来理解DATA步、PROC步和SAS语句。在图2.16中,SAS语句、DATA步和PROC步都已经标识出来。

  

图2.16 SAS语句、DATA步、PROC步

  可以在SAS程序的任何地方使用注释语句来说明程序的目的、解释不好理解的程序片段,或者描述复杂程序中的一些步骤或计算原理。注释有两种基本形式,第一种如下:

  *消息;

  消息为注释的内容,可以是任意长度,但必须写为单独的语句,以分号结束,但内部不能包含分号。

  第二种形式如下:

  /*消息*/

  消息为注释的内容,也可以是任意长度,可以嵌套任何类型的注释,还可以包含分号和不匹配的引号。宏语言(在后面文章中将要介绍)中使用注释时,必须使用这种方式。

  下面是使用注释的几个例子。

  例1:

  *Do NOT edit below this line!;

  例2:

  /* Do NOT edit below this line! */

  例3:

  /***********************************************************

  * PROGRAM SETUP

  * Use this section to alter macro variables, options, * or other aspects of the test. No Edits to this * Program are allowed past the Program Setup * section!!

  ***********************************************************/

  SAS编程基本概念到这里就介绍完了,下一篇文章将会介绍“读取外部数据到SAS数据集”之“通过DATA步读取数据”。

  小贴士

  读者可以从以下链接获取SAS公司提供的免费版环境:

  SAS大学版(SAS® University Edition)是SAS为在校大学生免费提供的基于虚拟机和网页的SAS环境。

  下载路径:

  https://www.sas.com/en_us/software/university-edition/download-software.html

  SAS学术版(SAS® OnDemand for Academics)是 SAS 为学术届人士免费提供的、在线的、基于SAS 私有云上的应用服务环境。

  用户首先需要注册,然后按照提示信息就可登录。

  注册路径:

  https://odamid.oda.sas.com

  本文转自《深入解析SAS — 数据处理、分析优化与商业应用 》

  作者:夏坤庄、徐唯、潘红莲、林建伟

  如若转载本文,请在文章顶部标注 “本文转自SAS知识 (ID: SASadvisor),摘自《深入解析SAS — 数据处理、分析优化与商业应用 》”

  

  

  作者介绍

  夏坤庄

  《深入解析SAS — 数据处理、分析优化与商业应用》第一作者, SAS软件研究开发(北京)有限公司客户职能部总监。在承担研发工作的同时,夏及其团队负责对SAS非英语市场提供技术支持,并且与在美国及其它地区的团队一起,服务于SAS的SaaS/RaaS业务,同时提供和验证关于SAS产品和技术在应用领域的最佳实践。在加入SAS软件研究开发(北京)有限公司之前,夏就职于SAS中国公司,历任资深咨询顾问、项目经理、首席顾问、咨询经理,拥有丰富的咨询和项目实施经验。在长期的从业经历中,不但为SAS的金融行业客户成功实施了众多深受好评的项目,而且在近年领导实施了非金融行业的多个大数据分析项目。

  SAS知识

  微信:SASAdvisor

  长按二维码关注

  欢迎大家投稿,一起分享SAS的点滴

  投稿邮箱: sasadvisor@outlook.com

  3月原创好文回顾,请点击阅读:

  7扇门|风控人员发现一欺诈漏洞,为平台挽回损失近百亿

  朝阳35处|天哪!这篇文章把现金贷赚钱的秘诀都讲透了(文末有惊喜)

  零道书院|当无法相信双眼所见又该如何?

  朝阳35处|微表情透视“爱乐之城”:10秒分手戏潜台词知多少

阅读
分享