msgbartop
List for SAS fans and programmer
msgbarbottom

05 12月 13 SAS DATA步之全解密


SAS DATA步之全解密

Swati Agarwal,OPTUM,Eden Prairie,MN

空谷幽兰  翻译  sxlion 校对  原文链接

译言:SAS DATA步对于SAS入门学习者来说是个难以理解的东西,因为SAS封装了一些过程,这种封装对于有语言基础的人来说反而是一个障碍。本文非常详细的解释了SAS 数据的编译、执行过程,对于了解SAS的基本运行有很大帮助。不管SAS老鸟,新鸟,相信你都会有收获,因为这篇文章是难得的如此系统 !

摘要

每个SAS数据步(SAS Data step,以后写成简写“DATA步”)在整个SAS程序中编译和执行过程中。大量DATA步的处理过程都是非明示的(即隐藏不可见)。例如,尽管程序中没有使用循环控制语句不包含循环,但DATA步都像一个自封装的小程序以一种非明示的循环形式执行。

这篇文章探讨了一些非明示的DATA处理过程怎么控制你的DATA步实际运行的。

需要提前说明的概念:

  •   程序数据向量(Logical Program Data Vector简写成PDV,台湾地区翻译成“程式资料向量”)
  •   SAS自动变量名及其使用
  •   理解data步的内部处理过程
  •   代码编译期间发生的事情
  •   程序执行期间实际发生了什么
  •   如何获取和存储变量属性

你或许在程序中写过大量的DATA步:一些能运行,一些则运行不了。有时候你知道为什么;有时你不知道为什么,甚至你冥思苦想而百思不得其解。如果碰到过这些问题,那么这篇文章很适合你。

Data步设计的非常好,但是有些另类。如果你想写出很漂亮的代码,就很有必要知道DATA步的工作原理。读完这篇文章以后,“哦,哦,… 原来如此!”,一个即使使用SAS多年的老鸟,也会发出这样的感叹。 from http://saslist.net

引言

DATA步是建SAS数据集的主要方法之一。要想成为一个优秀的SAS程序员很有必要理解DATA步的各个环节,主要是因为一些涉及数据处理和创建数据集的任务可能只能通过DATA步才能解决(这些任务不能通过SAS过程步(SAS procedures,以后简写成“SAS过程步”)解决、或者使用SAS过程步太过复杂而难以使用)。

了解DATA步的生命周期非常重要,它分为编译和执行两个阶段。同时学习PDV也非常重要。PDV贯穿SAS的编译和执行两个阶段,而且能决定了信息在DATA步中的存储及变化。

编译阶段包括:

  •   编译SAS语句,包括检查语法
  •  创建一个输入缓存区(input buffer)(如果需要读入原始数据文件)、一个PDV和描述性信息

执行阶段包括:

  •   计算Data步迭代的次数(从Data语句开始)
  •   将PDV中的所有变量设成缺失值并初始化自动变量
  •   读取输入观测(从原始文件或SAS数据集)
  •   执行附加的处理或计算语句
  •  将一条数据记录写入输出数据集并返回到DATA步语句

PDV贯穿编译和执行阶段:

  •  PDV是内存中的一个临时逻辑区域,SAS建立数据集时,每条观察值只有一次机会用到PDV。
  •  包含所有变量的当前值
  •  包含两个自动变量:_N_和_ERROR_

(更多…)

原创文章: ”SAS DATA步之全解密“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/356