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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
日志服务 SLS,月写入数据量 50GB 1个月
云解析 DNS,旗舰版 1个月
简介:

本节书摘来自华章出版社《深入解析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。

相关文章
|
20天前
|
机器学习/深度学习 文字识别 监控
安全监控系统:技术架构与应用解析
该系统采用模块化设计,集成了行为识别、视频监控、人脸识别、危险区域检测、异常事件检测、日志追溯及消息推送等功能,并可选配OCR识别模块。基于深度学习与开源技术栈(如TensorFlow、OpenCV),系统具备高精度、低延迟特点,支持实时分析儿童行为、监测危险区域、识别异常事件,并将结果推送给教师或家长。同时兼容主流硬件,支持本地化推理与分布式处理,确保可靠性与扩展性,为幼儿园安全管理提供全面解决方案。
|
1月前
|
弹性计算 运维 安全
优化管理与服务:操作系统控制平台的订阅功能解析
本文介绍了如何通过操作系统控制平台提升系统效率,优化资源利用。首先,通过阿里云官方平台开通服务并安装SysOM组件,体验操作系统控制平台的功能。接着,详细讲解了订阅管理功能,包括创建订阅、查看和管理ECS实例的私有YUM仓库权限。订阅私有YUM仓库能够集中管理软件包版本、提升安全性,并提供灵活的配置选项。最后总结指出,使用阿里云的订阅和私有YUM仓库功能,可以提高系统可靠性和运维效率,确保业务顺畅运行。
|
29天前
|
人工智能 API 开发者
HarmonyOS Next~鸿蒙应用框架开发实战:Ability Kit与Accessibility Kit深度解析
本书深入解析HarmonyOS应用框架开发,聚焦Ability Kit与Accessibility Kit两大核心组件。Ability Kit通过FA/PA双引擎架构实现跨设备协同,支持分布式能力开发;Accessibility Kit提供无障碍服务构建方案,优化用户体验。内容涵盖设计理念、实践案例、调试优化及未来演进方向,助力开发者打造高效、包容的分布式应用,体现HarmonyOS生态价值。
89 27
|
1月前
|
机器学习/深度学习 人工智能 JSON
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
Resume Matcher 是一款开源AI简历优化工具,通过解析简历和职位描述,提取关键词并计算文本相似性,帮助求职者优化简历内容,提升通过自动化筛选系统(ATS)的概率,增加面试机会。
146 18
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
|
1月前
|
数据采集 前端开发 JavaScript
金融数据分析:解析JavaScript渲染的隐藏表格
本文详解了如何使用Python与Selenium结合代理IP技术,从金融网站(如东方财富网)抓取由JavaScript渲染的隐藏表格数据。内容涵盖环境搭建、代理配置、模拟用户行为、数据解析与分析等关键步骤。通过设置Cookie和User-Agent,突破反爬机制;借助Selenium等待页面渲染,精准定位动态数据。同时,提供了常见错误解决方案及延伸练习,帮助读者掌握金融数据采集的核心技能,为投资决策提供支持。注意规避动态加载、代理验证及元素定位等潜在陷阱,确保数据抓取高效稳定。
70 17
|
1月前
|
供应链 项目管理 容器
深入探索 BPMN、CMMN 和 DMN:从定义到应用的全方位解析
在当今快速变化的商业环境中,对象管理组织(OMG)推出了三种强大的建模标准:BPMN(业务流程模型和符号)、CMMN(案例管理模型和符号)和DMN(决策模型和符号)。它们分别适用于结构化流程管理、动态案例处理和规则驱动的决策制定,并能相互协作,覆盖更广泛的业务场景。BPMN通过直观符号绘制固定流程;CMMN灵活管理不确定的案例;DMN以表格形式定义清晰的决策规则。三者结合可优化企业效率与灵活性。 [阅读更多](https://example.com/blog)
深入探索 BPMN、CMMN 和 DMN:从定义到应用的全方位解析
|
28天前
|
存储 弹性计算 安全
阿里云服务器ECS通用型规格族解析:实例规格、性能基准与场景化应用指南
作为ECS产品矩阵中的核心序列,通用型规格族以均衡的计算、内存、网络和存储性能著称,覆盖从基础应用到高性能计算的广泛场景。通用型规格族属于独享型云服务器,实例采用固定CPU调度模式,实例的每个CPU绑定到一个物理CPU超线程,实例间无CPU资源争抢,实例计算性能稳定且有严格的SLA保证,在性能上会更加稳定,高负载情况下也不会出现资源争夺现象。本文将深度解析阿里云ECS通用型规格族的技术架构、实例规格特性、最新价格政策及典型应用场景,为云计算选型提供参考。
|
30天前
|
数据采集 机器学习/深度学习 存储
可穿戴设备如何重塑医疗健康:技术解析与应用实战
可穿戴设备如何重塑医疗健康:技术解析与应用实战
73 4
|
1月前
|
Java 关系型数据库 数据库连接
Javaweb之Mybatis入门程序的详细解析
本文详细介绍了一个MyBatis入门程序的创建过程,从环境准备、Maven项目创建、MyBatis配置、实体类和Mapper接口的定义,到工具类和测试类的编写。通过这个示例,读者可以了解MyBatis的基本使用方法,并在实际项目中应用这些知识。
69 11
|
1月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

推荐镜像

更多