相信了解SAS软件的朋友都知道,SAS主要由DATA步和PROC步组成,其中DATA步作为数据读入、清洗、整理的主要程序步,学好DATA就显得尤为重要。而了解DATA步,重中之重就得了解PDV(Logical

Program Data Vector)。

首先

DATA步的处理分为两个阶段:

◇编译

◇执行

编译

由此可知,PDV在DATA步的编译阶段就已存在,那在DATA步的编译阶段究竟发生了什么事呢?

1检查DATA步语句的语法

2创建一个输入缓冲区(input buffer)

3创建一个程序数据向量( PDV)

4创建输出数据集的描述部分(注:只创建描述部分,不赋初值)

执行

1计算Data步迭代的次数(从Data语句开始)

2将PDV中的变量设成缺失值并初始化自动变量

3读取输入观测(从原始文件或SAS数据集)

4执行附加的处理或计算语句

5将一条数据记录写入输出数据集并返回到DATA步语句

输入缓冲区:

SAS在使用input读入外部数据之时,首先需要将外部数据读入内存,即输入缓冲区。(注:当使用set语句之时,则无涉及到输入缓冲区的工作。)

程序数据向量( PDV):

PDV为内存中的一个临时逻辑区域,SAS在建立数据集时,先将每条观测读入PDV,然后执行一系列的语句之后,在遇到output或run语句时,再将观测写入数据集(DATA

_NULL_除外)。在PDV中,除当前变量外,还包含两个自动变量:_N_和_ERROR_,前者表示DATA步迭代的次数,后者则表示此次迭代是否出错,若出错则值为1,反之为0。除此之外,还有END=,IN=,FIRST,LAST,POINT=等自动变量。其中END=可做set语句选项,当读入的观测到达最后一行时,该值为1;first、last则存在于使用by语句之时建立,point=选项可用于选择读入某条观测,in=则是数据集选项,用于指示该观测是否从某数据集读入。 这些自动变量并不保存到生成的数据集中,若需保存可将其负值给某一变量。

PDV示例:

在提交此程序之后,编译时,SAS建立一个读入缓冲用以存储原始数据。

而后,建立PDV及变量描述部分如下(长度默认为8)

执行过程中,将变量赋初值(数值型变量空值为.,字符型变量空值为空格)

然后,读入第一条观测

此时DATA步会依次执行data步中附加的语句(此程序示例中无其他执行语句);直到遇到output或run语句时,将第一条观测写入temp数据集中,后开始下一次迭代,直到所有观测均读入。数据分析师培训

python读取sas数据集_SAS之DATA步运行机制相关推荐

  1. python读取sas数据集_利用Python获取SAS和R自带数据集

    图:北京-奥森公园-2018年4月 无论是SAS.R还是Python,本身都自带一些数据集,对于初学者来说,可以通过这些自带的小数据集进行编程练习,无疑是非常方便的.SAS.R作为统计分析软件,本身自 ...

  2. Python读取CIFAR10数据集,附代码详解

    Python读取CIFAR10数据集 初次接触机器学习,用到的第一个数据集就是CIFAR10.这是一个小型数据集.一共包含 10 个类别的 RGB 彩色图 片:飞机( airplane ).汽车( a ...

  3. python 读取 MNIST 数据集,并解析为图片文件

    python 读取 MNIST 数据集,并解析为图片文件 MNIST 是 Yann LeCun 收集创建的手写数字识别数据集,训练集有 60,000 张图片,测试集有 10,000 张图片.数据集链接 ...

  4. python导入sas数据集_运用import过程进行SAS数据导入完全实用教程

    运用import过程进行SAS数据导入完全实用教程 1 单个规范格式文件导入. 对单个文件进行导入是我们遇到最多的情况,主要有以下几种: 1.1 对指定分隔符('|',' ','!','ab'等)数据 ...

  5. python 访问sas 逻辑库_SAS岩论 | 在Jupyter Notebook中使用SAS

    原标题:SAS岩论 | 在Jupyter Notebook中使用SAS 在Jupyter Notebook中使用SAS Jupyter Notebook目前已成为绝大多数编程人员首选的工具.尤其是学习 ...

  6. Python读取MNIST数据集

    MNIST数据集下载地址:http://yann.lecun.com/exdb/mnist/ 读取MINST数据集第一张图像并显示 # coding=utf-8 import numpy as np ...

  7. Python 读取.xml数据集

    问题: 英-中翻译模型需要英文和中文的对照文本.文件类型为.text格式,要求两个文件的每一行是严格对应的.寻找到的文件为.xml格式.需要将英文的句子和中文的句子分别从.xml文件中提取出来. 数据 ...

  8. 【问题记录】怎么用python读取CIFAR10数据集?

    https://jingyan.baidu.com/article/656db9183296c7e381249cf4.html

  9. 从程序员到数据科学家:SAS 编程基础 (06)- DATA步与PDV

    在BASE SAS 中,DATA 语句用于开始一个数据步, 后续为若干DATA步特定的语句:SAS数据步结束于下一个 DATA 步或 PROC 步开始之处,或者结束于后续显式指定的RUN语句. 注意: ...

最新文章

  1. Redis 笔记(10)— 发布订阅模式(发布订阅单个信道、订阅信道后的返回值分类、发布订阅多个信道)
  2. 整理一下自己手撸的博客
  3. Javascript函数执行、new机制以及继承
  4. 用 FileZilla 连接 Amazon 的aws的主机
  5. 理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)
  6. Android Volley完全解析(四),带你从源码的角度理解Volley
  7. 【Acwing 219. 剪纸游戏】
  8. oracle 如何终止存储过程的运行
  9. andriod环境搭建
  10. Star Schema完全参考手册读书笔记五
  11. GNU Call 开源的Skype替代项目
  12. CentOS+NodeJS环境
  13. LeetCode 144. Binary Tree Preorder Traversal 20170706
  14. 第9月第6天 push pop动画 生成器模式(BUILDER)
  15. 人大金仓数据库软件下载
  16. python识别屏幕内容_python之屏幕抓取
  17. day26_安卓基础之之Android介绍与入门
  18. web day03 CSS基本概念 选择器
  19. 计算机主机一闪一闪的无法启动,电脑开机屏幕一闪一闪的开不开在一重启就好了...
  20. python画生日_使用PYTHON制作一个生日查看器

热门文章

  1. AVOS Cloud 学习笔记(一) 简介和入门
  2. 精品软件 推荐 QQ 电脑管家
  3. qq飞车服务器修改器,qq飞车ve修改器
  4. Android Service服务保活
  5. 【数据分析】2019北京积分落户数据分析
  6. unity实现翻页效果
  7. javascript用js简单的实现电子时钟
  8. Java基础---Java中带参数返回值方法的使用(四十)
  9. 64位chrome崩溃问题
  10. Java指定windows用户认证实现Sqlserver数据库连接