SAS第二讲:编程创建SAS数据集
SAS第一章SAS软件概述第二章建立SAS数据集PPT课件

二、学习哪些内容
1.软件简介 2.SAS软件概述 3.数据集的建立 4.2.统计分析与应用 5.描述统计 6.统计分析
三、使用教材
1. SAS软件实用教程(第2版) 张瑛 雷毅雄 科学出版社; 2. 参考资料: 3. (1)SAS统计分析, 沈其君,高等教育出版社,以统计方
by descending avg;
run;
proc print;
run;
SAS语句特点
SAS程序由语句组成,语句用分号结束。语句一般由 特定的关键词开始,语句中可包含变量名、运算符等,它 们以空格分隔。SAS对语句所占的行数无限制,一个语句 可占多行,同样,多个语句也可占一行。
SAS程序的程序组成
2. 在数据处理和统计分析领域,SAS系统被誉为国际上的标准软 件系统,尤其是在医学统计、生物统计,更认可SAS运行结果 。
3. 在此仅举一例如下:在以苛刻严格著称于世的美国FDA新药审 批程序中,新药试验结果的统计分析规定只能用SAS进行,其 他软件的计算结果一律无效!哪怕只是简单的均数和标准差也 不行!由此可见SAS的权威地位。
SAS程序可以非常复杂,但其基本结构一般由 数个完成单个动作的程序步和环境设置语句构成。 而程序步分为两种,一种叫数据步(data step) ,一种叫过程步(proc step),分别以DATA语句 和PROC语句开始。数据步和过程步由若干个语句组 成,一般以RUN语句结束。前者用来创建和修改用 于统计分析的数据集,后者则利用已创建的数据集 完成特定的统计分析任务。比如下面的例子:
bmi=weight/height**2; 值赋给bmi*/
SAS 编程及应用------SAS数据集的建立

SAS 编程及应用------SAS数据集的建立SAS数据格式v 观测(Observation)1.描述被观测对象的单一整体(如个别人、一个实验动物等)某些特性的一系列数据值称为一个观测,又称为观察。
在SAS数据集中每一行数据是一个观测。
v 等同于数据库中的一条记录v 变量(Variable)1.变量指定了数据的某一特性。
在SAS数据集中,每一个观测是由各个变量的数据值组成。
在数据集中每一列数据是一个变量。
v 变量的命名1.最多32个字符长,第一个字符必须是字母或者下划线,不能有空格。
特殊字符(如$,@,#)也不允许在SAS名中使用。
合法变量名如:A A1 abc name age total …;2.SAS系统保留的特殊变量名,以下划线开始和结尾。
如:_N_和_ERROR_等。
v 变量的特性1.名称、类型、长度、输入格式、输出格式和变量描述;2.两种类型:数值型和字符型;3.长度特性:是指存贮的字节数。
缺省长度是8(为了存贮长度与缺省值不同的变量,需使用LENGTH语句)。
v 缺失值1.当一个变量由于某种原因没有得到(可能没有观测到,或由于数据错误,或由于计算错误),称该值为缺失值;2.在SAS中数值类型的缺失值用“.”表示;3.字符类型的缺失值为“”(空格)表示。
v 常量1.SAS常量为值固定不变的量;2.常量分为以下三类;•数值常量:1.5 -2.79 1.75E-5;•字符常量:“Hello”‘ABC’“Zhangli”;•日期、时间、日期时间常量:后接D,T,DT。
‘1JAN2000’D‘9:25:19’T‘1JAN2000:10:30:05’DTv SAS数据集1.SAS数据集是SAS过程的数据基础。
可以从外部数据读进来,转变成SAS数据,也可以自己输入产生;2.可以是临时的,或永久的;3.数据集含两部分内容:• 描述部分:数据名称、类型、长度、格式等• 数据部分:包含实际数据值4.SAS数据值被安排在一个矩阵式的表状结构中。
第4章 用编程读入数据建立SAS数据集

第4章用编程读入数据建立sas数据集§4.1 sas编程基本概念§4.1 概述sas语言程序由数据步和过程步组成。
sas语言的基本单位是语句,每个sas语句一般由一个关键字(如data,proc,input,cards,by)开头,包含sas名字、特殊字符、运算符等,以分号结束。
sas关键字是用于sas语句开头的特殊单词,sas语句除了赋值、累加、注释、空语句以外都以关键字开头。
sas名字在sas程序中标识各种sas成分,如变量、数据集、数据库,等等。
数据步和过程步数据步用来生成数据集(从数据片中或外部数据文件中读取数据)、计算整理数据等。
语法:data 数据集名;.....;run;过程步:面向SAS数据集,完成某个特定的计算、分析和呈现功能语法:proc 过程名;......;run;sas程序的书写规则sas程序是由一至多个数据步骤(data step)和过程步(Procedure Step)互相交叉组合而形成。
根据各个数据步骤的属性或过程步的功能,来实现sas 数据文件的建立、进行统计分析等。
sas系统的编译方式是以数据步或过程步为一个区块来编译的,语法编译无误便开始执行该数据步或过程步,执行完整一个数据步或过程步区块后便继续处理下一个数据步或过程步。
一个区块接一个区块地将所有程序代码编译及执行完后,便完成了该程序的执行。
sas程序代码提交出去,便已将程序交由sas系统去完成。
用户必须确定sas系统在log窗口中是否有显示错误的程序代码,分析数据的属性是否正确。
sas的程序代码是自由格式的程序代码,每个语句由关键词开始,以“;”作为一个程序语法的结束;一行可以含多个程序语句;一个程序语句也可以分成多行,但必须以空格(只要有一个空格的地方,就可用任意多个空格来替代)为分隔。
注:在命令框中键入num即可显示或取消行数。
指定逻辑库名与逻辑文件名指定逻辑库名在sas系统中只有sas数据集才能被sas过程直接调用,sas数据集的结构和dbf数据库完全相同。
第二讲 SAS基本概念:数据集

SAS数据文件同时描述信息 和存储数据值。 SAS数据视图并不实际存储 数据,而只是一个查询语句。
class是数据视图 class1是数据文件
SAS数据集组成部分包括: 描述信息; 每列为一个变量,包括一 数据值。 组有着相同特征的值
选数据( Data) Where清除(Where Clear): 可 清除where语句的选择, 显示全 部观测; 选 编辑(Edit) 查找(Find)或重复查找(Refind): 可使用where语句逐条查找满足 条件的观测(记录).
SAS系统对数据文件的管理
使用Viewtable 编辑
ViewTable 提供一个显示数据集内容的窗口.它具有对 数据集的浏览、编辑和创建的功能 如何进入ViewTable窗(VT窗或VT界面): (1) 在SAS资源管理器或逻辑库对话窗中双击SAS 数据集的图标(V8) (2) 键入命令:VT 数据集名 例如 VT Sashelp.CLASS (3) 在SAS主窗口由工具=>表编辑嚣=>进入TV界面后 由文件=>打开所选数据集.
data=ResDat.Idx000001;
SAS系统对数据文件的管理
SAS 逻辑库(文件库)--用资源管理(浏览)器查看库 进入浏览器窗口即可查看 SAS文件库的属性和内容.
若用详细列表显示库内容, 点击某一栏目名时可将此栏 目内容按字母顺序排序后详 细列出.
在库名处点击鼠标右键 并选属性(Properties) 即可显示该库的属性.
sassas逻辑库文件库用浏览器查看文件属性对数据文件可查看各列字段属性在列名如weight点击右键可修改某些栏目的内容sassas逻辑库文件库用浏览器操作文件在文件名处点击鼠标右键可在弹出菜单中选择对文件的操作包括文件的更名复制删除复制文件也可以用将文件直接拖动至库的目录树来实用鼠标左键双击数据文件名即可打开sas数据集
SAS学习系列05. 数据步创建数据集的过程

05. 数据步创建数据集的过程数据步创建数据集的过程分为两个阶段:1. 编译阶段:扫描语法错误,生成数据集的“描述信息”;2. 执行阶段:逐条记录地读入并处理输入数据(循环执行若干次数据步)。
(一)编译阶段将数据从外部文件读入“程序数据向量”(Program Data Vector)。
一、在输入缓冲区(内存)创建“程序数据向量”注意:是读入外部数据时创建,而不是读入SAS数据集时创建。
例1下面的数据步代码:infile'D:\我的文档\My SAS Files\9.3\invent.dat';input Item $ 1-13 IDnum $ 15-19 InStock 21-22 BackOrd 24-25;Total=instock+backord;run;将创建如下的“程序数据向量”:包括_N_:记录数据步执行的次数,读入一条记录则+1;_ERROR_:用来指示错误,默认是0,遇到错误则变为1;注意:_N_和_ERROR_是该处理过程自动生成的,将来也不会出现在数据集的观测值中。
Item、IDnum、InStock、BackOrd:数据集自身的变量,其变量属性(长度、类型等)在第一次读到数据时确定;Total:数据步中赋值语句生成的变量。
二、检查语法错误(1)关键词缺少或拼写错误;(2)无效的变量名;(3)标点符号缺失或拼写错误;(4)无效的可选参数。
三、生成数据集的“描述信息”遇到数据步的run;语句时生成,包括:(1)数据集的名称;(2)数据集包含变量的个数;(3)数据集各变量的变量名和属性。
注意:此时,“程序数据向量”中还没有内容,数据集中也还没有观测值,观测值将在执行阶段从“程序数据向量”中逐条读取。
(二)执行阶段逐条记录地从“程序数据向量”读入并处理输入数据(循环执行若干次数据步)。
例如,例1中的invent.dat文件共有9条记录:数据步读入它将循环执行9次。
执行阶段具体步骤:第1次循环:一、初始化“程序数据向量”_N_ = 1_ERROR_ = 0其它变量 = 缺省值(数值型是 . 字符型是空格)二、执行input语句前例中,代码依次将外部数据文件的第一行的1-13列读入数据存入Item变量,……,赋值语句将instock和backord值相加赋给Total.三、数据步收尾工作1. 将当前“程序数据向量”中的条目,作为第1条观测值写入输出数据集。
SAS数据集的建立.

数 据 分 析
建立SAS数据集
¾ SAS数据集的名称 包括三部分,格式为: Libref.data-set-name.membertype Libref(库标记)──是SAS数据库的逻辑名称 data-set-name(数据集名称) membertype(成员类型) ──SAS 数据文件的成员类型是data; SAS 数据视窗的成员类型是view. 成员类型用户使用时不必给出.
建立SAS数据集
¾常用数据步语句简介
1. DATA语句 语句格式: data <数据集名表>; DATA语句的作用是表明数据步的开始,并给出 所建数据集的名称. 临时数据集及永久数据集. 空数据集:使用_NULL_数据集名,不建立数据集. 例如: data _NULL_; a=sin(3.1415/4); b=int(a*100); put a b; /*将变量的值输出到log窗口*/ run; 自动命名:不给出数据集名,则SAS自动以data1, data2等依次命名. 当前数据集:最后建立的数据集.
数 据 分 析
建立SAS数据集
¾读取数据后列指针的定位 读完数据后指针的位置取决于使用的输入方式. 当使用列表输入时指针移向被取值后的 第2列,并从下一非空格列读下一数据. 当使用列输入或格式化输入时,指针移到 所取值后的第1列, 并从此列开始计算下一变 量的长. 如: input A 3-4 B; 或 input @3 A 2. B; /*读完A值后,指针移到第5列*/ 不论什么时候, 一旦指针移向新的记录行, 列指针都自动置为 1. 数 据 分 析
建立SAS数据集
建 立 SAS 数 据 集
数 据 分 析
建立SAS数据集
§1 SAS数据集和数据库
SAS建立数据集

SAS数据集的名字
例 PRINT过程用相同方法处理数据集aaa.abc, 而忽略它的形式: PROC PRINT DATA=aaa.abc 例中aaa.abc这个SAS数据集名字,aaa是库标记, abc是数据集名字,成员类型没有写出,应该是 DATA或VIEW中一个。
打开KEYS 窗口后在F12的右边的空白区键入 OPTIONS,完毕之后退出KEYS窗口
二 显示管理系统命令
1显示管理系统命令的发布 有四种命令的发布方式都可达到相同结果。
① 在命令框中直接键入命令
② 按功能键
③ 使用下拉式菜单
④ 使用工具栏
例:打开OUTPUT窗口,相应地四种操作:
2 显示管理系统的常用窗口
KEYS
LIBNAME
查看及改变功能键的设置
查看已经存在的SAS数据库
DIR
查看某个SAS数据库的内容
如 dir sasuser
VAR
OPTIONS
查看SAS数据集的有关信息
查看及改变SAS的系统设置
例:自定义F12功能键为OPTIONS命令
quantilex知识点回顾描述性统计57?众数频数tabley?多组数据的概括?summary计算均值和五数?aggregate分组描述函数?aggregate数据框指定分组变量计算函数?aggregatestatex77listregionstateregionmean知识点回顾描述性统计58?按列联表中某个属性求和即边际列表?margintable?margintableeyehair1按行相加?margintableeyehair2按列相加?proptable产生相对频数列联表频数边际?optionsdigits1保留一位有效数字?proptableeyehair1知识点回顾描述性统计知识点回顾?sas名字的命名规则
第二章 SAS数据集的建立

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