SAS第二讲:编程创建SAS数据集
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Data步的一般形式
数据步的一般形式
Data步一般形式2: Data 数据集名; Infile datalines(或cards) <其他选项>; <Informat 变量名 变量输入格式; > input 变量输入设定; <Format 变量名 变量输出格式;> <Label 变量名=‘变量标签’;> datalines(或cards); 数据列 ; Run; 无其他选 项时Infile语 句可以省略
数据步的一般形式
Data步一般形式1: Data 数据集名; Infile 文件名 <fistobs=n1> <obs=n2>; <Informat 变量名 变量输入格式;> Input 变量输入设定; <Format 变量名 变量输出格式;> <Label 变量名=‘变量标签’;> Run; 例1 编写程序读入数据“例1.txt”。
Data步的编译与执行
扫描每个语句检查语法错误Leabharlann Baidu
创建数据集的描述部分
数 据 步 程 序
编 译 阶 段
执 行 阶 段
对源数据文件每条记录执行数据步 创建数据集的数据部分
Data步的编译与执行
数据步的编译阶段(Compilation phase)
检查程序的语法错误(词语、语法) 转换程序为机器码,供执行阶段使用
实验题
编写程序将数据“实验题1”、“实验题2”、“实验题 3”、“实验题4”创建为SAS数据集,要求数据打印结果 分别如下图1-4 实验报告完成要求:(1)Word文档需要命名为“学号+姓 名.doc”(如:103321001陈文杰);(2)实验报告使用模板并且需 包含粘贴过来的原始程序及输出结果截图;(3)输出结果截图 中必需包含程序运行的时间
解决特殊格式的输入及 例6 编写程序读入数据“例6.txt”。 变量长度超过8的问题 可于input语句前 解决变量长度超过8的问题
例7 编写程序读入数据“例7.txt”。
变量输入设定
读入模式的混合使用
可针对数据特点对不同字段使用不同读入方式 控制变量输入的关键词:指针位置、格式、分隔符 读入变量的原理:从指针位置(缺省为第1列)读入第一个字段 直至(1)达到规定列;(2)遇到分隔符; (3)达到规定长度(默认长度8、格式规定或Length语句规定) 读入格式由两种情况决定: (1)字符型默认(<$>)和数值型默认; ①与变量无冒号分隔:指针达到格式指定长度 (2)指定格式; ②与变量有冒号分隔:指针达到分隔符前一列 例8 数据“例4.txt”的第一个变量为身份证号,从中读取出生年 月日产生一个新的变量。
变量输入设定
列举输入模式
适用于分隔符固定格式源文件,依次读入由分隔符隔开的 各个字段 分隔符为空格时可缺省 一般形式: Infile 文件名|Cards <DLM=分隔符>; Length 变量名… <$> 长度…; Input 变量名 <$>…; 默认长度为8,超过会截断 Input 变量名:输入格式…;
建立工作部件:输入缓冲器(Input Buffer)
建立工作部件:PDV(Program Data Vector) 确定数据集中变量的三个必须属性(Name,Type,Length)
建立数据集描述部分
Data步的编译与执行
SAS系统处理DATA步的粗流程 源数据文件 由程序决定 _N_ _Error_ 工作部件 Input Buffer PDV
例3 编写程序读入数据“例3.txt”。 例4 编写程序读入数据“例4.txt”。
变量输入设定
按列输入模式
适用于字段固定格式源文件 一般形式: Input 变量名 <$> n1-n2; 优点:读入字段灵活,允许字符型变量中存在空格符与 其他特殊符号,缺失数据无特殊占位要求 缺点:没有设定输入格式,某些类型数据不能正确读入 例5 使用按列输入模式读入数据“例4.txt”。
由程序决定 SAS数据集
Data步的编译与执行
数据步的执行阶段(Execution phase)
PDV中外部变量初始为缺失值(数值:句号,字符:空格)
输入原文件中每条记录至输入缓冲器,按Input语句读入PDV 在数据步结束时缺省地将PDV内容作为一条记录写入新 的数据集
回到数据步开始,重复①~③直至源文件最后一条记录 读入外部文件时,数据步每次迭代开始系统会为每个变 量置缺失值(除几种特殊情况);读入SAS数据集时,只在 第一次执行时置缺失值,以后会保留其值直至新值写入
Data步的编译与执行
常见错误的排除
拼写错误 ——有些能够被系统自动矫正
遗漏run语句 遗漏分号 引号或括号不配对 选项无效
例9 尝试排除下列程序中的错误
例9_1,例9_2,例9_3 由于引号不配对引起程序无法 终止时,可通过提交: Ctrl+Break 终止程序进程
Data步的编译与执行
例2 编写程序 读入数据 “例2.txt”。
变量输入设定
格式化输入模式
适用于字段固定格式源文件,以指针指定起始列,以输入 格式决定结束列 一般形式: Input 指针控制 变量名 输入格式…;
指针默认起始位置为第一列,读入 一个字段后指向下一列,依次读入 各个字段可缺省
@n:绝对位置 +n:相对位置
实验任务
实验任务
实验任务
实验任务
第二讲 编程创建SAS数据集
Data步的一般形式
变量输入设定
Data步的编译与执行
Data步的一般形式
SAS程序的基本内容和结构
基本内容:指明供操作的数据、对数据进行何种加工、期望 的输出结果 基本结构:数据步(Data step)语句、过程步(Proc step)语句
SAS程序的书写规则
每个语句以关键词开始,分号结束(不能是中文状态分号) 语句可以在任意列开始和结束,一个语句可以写成多行, 多个语句也可以写成一行 语句的词与词之间可以用一个或多个空格符或其他特殊字 符隔开 程序行数的添加: Tools\Options\Enhanced Editor……
Data步的一般形式
Input语句的跟踪符号@ 已读过的数据行会在下一个Input语句或数据步下一个循 环中被弃用 Input语句后加入一个@:保留数据行供下一个Input语句 使用;加入@@:保留数据行供下一个Input语句及下一个 循环使用
例10 考虑程序“例10”的执行结果
实验任务
掌握数据步的一般形式与各种变量设定形式 了解数据步的编译与执行过程 掌握常见程序错误的排除方法