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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
日志服务 SLS,月写入数据量 50GB 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。

相关文章
|
9天前
|
SQL 关系型数据库 MySQL
深入解析MySQL的EXPLAIN:指标详解与索引优化
MySQL 中的 `EXPLAIN` 语句用于分析和优化 SQL 查询,帮助你了解查询优化器的执行计划。本文详细介绍了 `EXPLAIN` 输出的各项指标,如 `id`、`select_type`、`table`、`type`、`key` 等,并提供了如何利用这些指标优化索引结构和 SQL 语句的具体方法。通过实战案例,展示了如何通过创建合适索引和调整查询语句来提升查询性能。
76 9
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术深度解析:从基础到应用的全面介绍
人工智能(AI)技术的迅猛发展,正在深刻改变着我们的生活和工作方式。从自然语言处理(NLP)到机器学习,从神经网络到大型语言模型(LLM),AI技术的每一次进步都带来了前所未有的机遇和挑战。本文将从背景、历史、业务场景、Python代码示例、流程图以及如何上手等多个方面,对AI技术中的关键组件进行深度解析,为读者呈现一个全面而深入的AI技术世界。
67 10
|
1月前
|
数据采集 自然语言处理 搜索推荐
基于qwen2.5的长文本解析、数据预测与趋势分析、代码生成能力赋能esg报告分析
Qwen2.5是一款强大的生成式预训练语言模型,擅长自然语言理解和生成,支持长文本解析、数据预测、代码生成等复杂任务。Qwen-Long作为其变体,专为长上下文场景优化,适用于大型文档处理、知识图谱构建等。Qwen2.5在ESG报告解析、多Agent协作、数学模型生成等方面表现出色,提供灵活且高效的解决方案。
160 49
|
23天前
|
机器学习/深度学习 人工智能 PyTorch
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
本文探讨了Transformer模型中变长输入序列的优化策略,旨在解决深度学习中常见的计算效率问题。文章首先介绍了批处理变长输入的技术挑战,特别是填充方法导致的资源浪费。随后,提出了多种优化技术,包括动态填充、PyTorch NestedTensors、FlashAttention2和XFormers的memory_efficient_attention。这些技术通过减少冗余计算、优化内存管理和改进计算模式,显著提升了模型的性能。实验结果显示,使用FlashAttention2和无填充策略的组合可以将步骤时间减少至323毫秒,相比未优化版本提升了约2.5倍。
42 3
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
|
20天前
|
前端开发 UED
React 文本区域组件 Textarea:深入解析与优化
本文介绍了 React 中 Textarea 组件的基础用法、常见问题及优化方法,包括状态绑定、初始值设置、样式自定义、性能优化和跨浏览器兼容性处理,并提供了代码案例。
48 8
|
26天前
|
测试技术 开发者 Python
使用Python解析和分析源代码
本文介绍了如何使用Python的`ast`模块解析和分析Python源代码,包括安装准备、解析源代码、分析抽象语法树(AST)等步骤,展示了通过自定义`NodeVisitor`类遍历AST并提取信息的方法,为代码质量提升和自动化工具开发提供基础。
43 8
|
21天前
|
机器学习/深度学习 搜索推荐 API
淘宝/天猫按图搜索(拍立淘)API的深度解析与应用实践
在数字化时代,电商行业迅速发展,个性化、便捷性和高效性成为消费者新需求。淘宝/天猫推出的拍立淘API,利用图像识别技术,提供精准的购物搜索体验。本文深入探讨其原理、优势、应用场景及实现方法,助力电商技术和用户体验提升。
|
26天前
|
缓存 NoSQL Java
千万级电商线上无阻塞双buffer缓冲优化ID生成机制深度解析
【11月更文挑战第30天】在千万级电商系统中,ID生成机制是核心基础设施之一。一个高效、可靠的ID生成系统对于保障系统的稳定性和性能至关重要。本文将深入探讨一种在千万级电商线上广泛应用的ID生成机制——无阻塞双buffer缓冲优化方案。本文从概述、功能点、背景、业务点、底层原理等多个维度进行解析,并通过Java语言实现多个示例,指出各自实践的优缺点。希望给需要的同学提供一些参考。
45 7
|
24天前
|
调度 开发者
核心概念解析:进程与线程的对比分析
在操作系统和计算机编程领域,进程和线程是两个基本而核心的概念。它们是程序执行和资源管理的基础,但它们之间存在显著的差异。本文将深入探讨进程与线程的区别,并分析它们在现代软件开发中的应用和重要性。
44 4
|
23天前
|
存储 监控 算法
Java虚拟机(JVM)垃圾回收机制深度解析与优化策略####
本文旨在深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法及参数调优方法。通过剖析垃圾回收的生命周期、内存区域划分以及GC日志分析,为开发者提供一套实用的JVM垃圾回收优化指南,助力提升Java应用的性能与稳定性。 ####

热门文章

最新文章

推荐镜像

更多