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

简介:

本节书摘来自华章出版社《深入解析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语句指定。此外,还可以指定结果的多级标题和脚注,这里不赘述。

image

image

可以通过“结果”窗口的条目在“结果查看器”的HTML文件中导航。在图1.8所示的“结果”窗口展开“Print: SAS系统”,并单击HTML条目,该条目对应的结果会自动展示在“结果查看器”的当前位置。
在代码运行过程中,运行日志会显示在“日志”窗口。单击窗口条的“日志 -(无标题)”可显示日志信息,如图1.9所示。日志中给出了语句执行结果、DATA步中生成数据集的观测数(行)和变量数(列),以及PROC步读取的观测数,还有运行所有DATA步和PROC步所花费的实际时间和CPU时间。“日志”窗口还可显示程序中的PUT语句输出,这个在本示例中没有涉及。

image

要养成提交代码运行后首先查看“日志”窗口信息的良好习惯,检查日志中是否有错误或警告信息。很多时候,特别是当提交代码量较大时,即使前面的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右下窗口所示。

image

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

相关文章
|
7天前
|
SQL 分布式计算 监控
Sqoop数据迁移工具使用与优化技巧:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入解析Sqoop的使用、优化及面试策略。内容涵盖Sqoop基础,包括安装配置、命令行操作、与Hadoop生态集成和连接器配置。讨论数据迁移优化技巧,如数据切分、压缩编码、转换过滤及性能监控。此外,还涉及面试中对Sqoop与其他ETL工具的对比、实际项目挑战及未来发展趋势的讨论。通过代码示例展示了从MySQL到HDFS的数据迁移。本文旨在帮助读者在面试中展现Sqoop技术实力。
21 2
|
16天前
|
存储 缓存 安全
掌握Go语言:Go语言中的字典魔法,高效数据检索与应用实例解析(18)
掌握Go语言:Go语言中的字典魔法,高效数据检索与应用实例解析(18)
|
19天前
|
存储 缓存 算法
Python中collections模块的deque双端队列:深入解析与应用
在Python的`collections`模块中,`deque`(双端队列)是一个线程安全、快速添加和删除元素的双端队列数据类型。它支持从队列的两端添加和弹出元素,提供了比列表更高的效率,特别是在处理大型数据集时。本文将详细解析`deque`的原理、使用方法以及它在各种场景中的应用。
|
21天前
|
安全 Java 数据安全/隐私保护
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
44 1
|
25天前
|
设计模式 算法 数据安全/隐私保护
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用(二)
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用
25 0
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用(二)
|
25天前
|
存储 算法 编译器
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用(一)
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用
35 0
|
6天前
|
SQL API 数据库
Python中的SQLAlchemy框架:深度解析与实战应用
【4月更文挑战第13天】在Python的众多ORM(对象关系映射)框架中,SQLAlchemy以其功能强大、灵活性和易扩展性脱颖而出,成为许多开发者首选的数据库操作工具。本文将深入探讨SQLAlchemy的核心概念、功能特点以及实战应用,帮助读者更好地理解和使用这一框架。
|
7天前
|
机器学习/深度学习 分布式计算 BI
Flink实时流处理框架原理与应用:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Flink实时流处理框架的原理,包括运行时架构、数据流模型、状态管理和容错机制、资源调度与优化以及与外部系统的集成。此外,还介绍了Flink在实时数据管道、分析、数仓与BI、机器学习等领域的应用实践。同时,文章提供了面试经验与常见问题解析,如Flink与其他系统的对比、实际项目挑战及解决方案,并展望了Flink的未来发展趋势。附带Java DataStream API代码样例,为学习和面试准备提供了实用素材。
25 0
|
14天前
|
负载均衡 算法 Linux
深度解析:Linux内核调度器的演变与优化策略
【4月更文挑战第5天】 在本文中,我们将深入探讨Linux操作系统的核心组成部分——内核调度器。文章将首先回顾Linux内核调度器的发展历程,从早期的简单轮转调度(Round Robin)到现代的完全公平调度器(Completely Fair Scheduler, CFS)。接着,分析当前CFS面临的挑战以及社区提出的各种优化方案,最后提出未来可能的发展趋势和研究方向。通过本文,读者将对Linux调度器的原理、实现及其优化有一个全面的认识。
|
15天前
|
测试技术 API 智能硬件
语言模型在提升智能助手引用解析能力中的创新应用
【4月更文挑战第4天】苹果研究团队推出了ReALM,一种利用大型语言模型解决引用解析的新方法,提升智能助手理解用户意图和上下文的能力。ReALM将引用解析转化为语言建模问题,尤其擅长处理屏幕上的实体,比现有系统提升超5%,性能接近GPT-4但参数更少。其模块化设计易于集成,可在不同场景下扩展。然而,复杂查询处理和依赖上游数据检测器可能影响其准确性和稳定性。
63 6
语言模型在提升智能助手引用解析能力中的创新应用

推荐镜像

更多