本节书摘来自华章出版社《深入解析sas:数据处理、分析优化与商业应用》一书中的第1章,第1.5节,作者 夏坤庄 徐唯 潘红莲 林建伟,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1.5 一个简单的SAS程序
在了解了SAS窗口环境并简单了解了SAS逻辑库、数据集这些基础概念后,就可以在SAS窗口环境编辑一个简单的SAS程序,提交运行并查看结果了。SAS程序由DATA步和过程步组成。DATA 步由关键字DATA开始,过程步由关键字PROC开始。当然SAS程序还可以包括宏语言,这个会在本篇后面的章节中专门介绍。
启动SAS窗口环境,在“程序编辑器”窗口输入下面的代码。
libname saslib base 'c:\sas\data';
data saslib.Inventory;
input Product_ID $ Instock Price;
datalines;
P001R 12 125.00
P003T 34 40.00
P301M 23 500.00
PC02M 12 100.00
;
proc print data= saslib.inventory;
run;
代码前面的部分之前已经介绍过。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语句指定。此外,还可以指定结果的多级标题和脚注,这里不赘述。
可以通过“结果”窗口的条目在“结果查看器”的HTML文件中导航。在图1.8所示的“结果”窗口展开“Print: SAS系统”,并单击HTML条目,该条目对应的结果会自动展示在“结果查看器”的当前位置。
在代码运行过程中,运行日志会显示在“日志”窗口。单击窗口条的“日志 -(无标题)”可显示日志信息,如图1.9所示。日志中给出了语句执行结果、DATA步中生成数据集的观测数(行)和变量数(列),以及PROC步读取的观测数,还有运行所有DATA步和PROC步所花费的实际时间和CPU时间。“日志”窗口还可显示程序中的PUT语句输出,这个在本示例中没有涉及。
要养成提交代码运行后首先查看“日志”窗口信息的良好习惯,检查日志中是否有错误或警告信息。很多时候,特别是当提交代码量较大时,即使前面的DATA步或PROC步运行失败,后续代码语句仍然会继续运行,但是可能会导致不正确的结果。所以必须检查日志中是否有需要注意的错误或警告信息。
接下来看看“输出”窗口。“输出”窗口展示SAS会话期间SAS语句的列表输出。SAS窗口环境默认不产生列表输出。尝试在上述代码的基础上稍作修改:改变输出标题和产生列表输出,并在PRINT过程后关闭列表输出。修改后的代码如下:
libname saslib base 'c:\sas\data';
data saslib.Inventory;
input Product_ID $ Instock Price;
datalines;
P001R 12 125.00
P003T 34 40.00
P301M 23 500.00
PC02M 12 100.00
;
ods listing;
title '仓库库存';
proc print data= saslib.inventory;
run;
ods listing close;
提交运行后,在默认打开的“结果查看器”中,HTML文件在包含本次代码输出的同时,还包含了上次提交代码产生的输出。在“结果”和“结果查看器”窗口都可以看到第二次运行结果的标题为我们在程序代码里指定的“仓库库存”。展开结果窗口的叶子节点,还可以看到第二次提交的代码产生了两类输出: HTML输出和列表输出。单击最后一个条目或单击窗口条的“输出-(无标题)”打开所产生的列表输出,可以看到数据集数据也输出到了输出窗口,如图1.10右下窗口所示。
到这里,已经了解如何在SAS窗口环境中编辑一个简单的SAS程序、提交SAS程序并检查SAS程序的运行日志、查看结果和输出。下面来看看基于SAS 9.4发布的另一可以交互方式提交SAS程序语句的Web应用SAS Studio。