天天看点

《深入解析sas:数据处理、分析优化与商业应用》一1.5 一个简单的SAS程序

本节书摘来自华章出版社《深入解析sas:数据处理、分析优化与商业应用》一书中的第1章,第1.5节,作者 夏坤庄 徐唯 潘红莲 林建伟,更多章节内容可以访问云栖社区“华章计算机”公众号查看

在了解了sas窗口环境并简单了解了sas逻辑库、数据集这些基础概念后,就可以在sas窗口环境编辑一个简单的sas程序,提交运行并查看结果了。sas程序由data步和过程步组成。data 步由关键字data开始,过程步由关键字proc开始。当然sas程序还可以包括宏语言,这个会在本篇后面的章节中专门介绍。

启动sas窗口环境,在“程序编辑器”窗口输入下面的代码。

代码前面的部分之前已经介绍过。libname语句定义物理路径在c:sasdata的sas逻辑库saslib。data步创建存储在逻辑库saslib下的sas数据集invertory,其中包含3个变量(列),分别为product_id、instock和price。在data步中sas会读取紧接着datalines语句并以分号结束的4行输入数据,每行数据按顺序赋值给前面3个变量。print过程会在结果查看器中打印data步创建的数据集inventory中的数值。

在输入代码后,保证该“程序编辑器”窗口为活动窗口,然后选择菜单“文件”“保存”,单击“工具栏”的工具项或按快捷键ctrl+s保存所输入的sas程序语句为“测试程序”。当前的窗口环境如图1.7所示。这时要保证c:sasdata文件夹存在,如果没有,在对应的目录创建一个,否则在“日志”窗口会提示错误及错误信息。选择菜单“运行”“提交”,或单击“工具栏”中的工具项、按快捷键f3提交代码。

默认情况下代码提交执行后,包含运行结果的文件html会产生,并自动显示为当前活动窗口,而主窗口左侧则会显示结果列表,如图1.8所示。

在图1.8中,数据集inventory的观测值和变量以表的形式展现在了html格式的“结果查看器”中。其中,“sas系统”字样是sas系统默认标题。可以在print过程之前使用title语句指定输出标题或在print过程中指定标题,通常我们会指定有意义的文字,比如“仓库库存”。指定的标题在整个sas会话期间一直有效,如果要使用其他输出标题或恢复默认标题,可以再次使用title语句指定。此外,还可以指定结果的多级标题和脚注,这里不赘述。

《深入解析sas:数据处理、分析优化与商业应用》一1.5 一个简单的SAS程序
《深入解析sas:数据处理、分析优化与商业应用》一1.5 一个简单的SAS程序

可以通过“结果”窗口的条目在“结果查看器”的html文件中导航。在图1.8所示的“结果”窗口展开“print: sas系统”,并单击html条目,该条目对应的结果会自动展示在“结果查看器”的当前位置。

在代码运行过程中,运行日志会显示在“日志”窗口。单击窗口条的“日志 -(无标题)”可显示日志信息,如图1.9所示。日志中给出了语句执行结果、data步中生成数据集的观测数(行)和变量数(列),以及proc步读取的观测数,还有运行所有data步和proc步所花费的实际时间和cpu时间。“日志”窗口还可显示程序中的put语句输出,这个在本示例中没有涉及。

《深入解析sas:数据处理、分析优化与商业应用》一1.5 一个简单的SAS程序

要养成提交代码运行后首先查看“日志”窗口信息的良好习惯,检查日志中是否有错误或警告信息。很多时候,特别是当提交代码量较大时,即使前面的data步或proc步运行失败,后续代码语句仍然会继续运行,但是可能会导致不正确的结果。所以必须检查日志中是否有需要注意的错误或警告信息。

接下来看看“输出”窗口。“输出”窗口展示sas会话期间sas语句的列表输出。sas窗口环境默认不产生列表输出。尝试在上述代码的基础上稍作修改:改变输出标题和产生列表输出,并在print过程后关闭列表输出。修改后的代码如下:

提交运行后,在默认打开的“结果查看器”中,html文件在包含本次代码输出的同时,还包含了上次提交代码产生的输出。在“结果”和“结果查看器”窗口都可以看到第二次运行结果的标题为我们在程序代码里指定的“仓库库存”。展开结果窗口的叶子节点,还可以看到第二次提交的代码产生了两类输出: html输出和列表输出。单击最后一个条目或单击窗口条的“输出-(无标题)”打开所产生的列表输出,可以看到数据集数据也输出到了输出窗口,如图1.10右下窗口所示。

《深入解析sas:数据处理、分析优化与商业应用》一1.5 一个简单的SAS程序

到这里,已经了解如何在sas窗口环境中编辑一个简单的sas程序、提交sas程序并检查sas程序的运行日志、查看结果和输出。下面来看看基于sas 9.4发布的另一可以交互方式提交sas程序语句的web应用sas studio。