02SAS编程基础
第2章 SAS编程基础

最常见,系统按照语句自身顺序进行解释执行。 如: data file1;
input mane$ 1-8 age sex$ height weight ; cards ; Zhang ji 28 m 1.75 60 Li ming 27 f 1.72 58 Wang jie 31 f 1.80 65 ; PROC print ; Run ;
19:02 25
SAS程序中的运算与表达
SAS表达式
用操作符将常量、变量、函数等连接起来进行运算, 最终会产生一个值(表达式的值)。
运算优先级:算术 > 比较 > 逻辑
19:02
26
sas程序的基本结构14sas系统中的常见过程sas程序的基本结构过程名作用输出结果print显示数据集的变量名及变量值变量变量值sort对指定变量进行排序对指定变量进行升降序排列means对数值型变量进行描述性统计分析均值标准差极值等univariate对数值型变量进行描述性统计分析常见统计量t检验分位数极端值freq对定序变量进行描述性统计分析累计频数频率等chart对指定变量绘制文本形式的图形饼图直方图星形图gchart在graph窗口中对指定变量绘图饼图直方图星形图15e程序program由sas语句组成的集合称sas程序
例如:计算1~100之间所有奇数之和。
编程如下: 结果如下:
20
SAS程序的结构化编程语句
2)当循环:
语法: do while (继续循环条件表达式) ; …; end;
例如:计算1~100之间所有偶数之和。 编程:
结果:
21
SAS程序的结构化编程语句
3)直到循环:
语法: do until (退出循环条件表达式) ; …; end;
第二章[SAS编程基础]
![第二章[SAS编程基础]](https://img.taocdn.com/s3/m/65357f160b4e767f5acfce7c.png)
第二章 SAS 编程基础第一节常量、变量与观测值2.1.1 观测值描述单一整体,如个别人、一个实验动物、一年、一个地区某些特性的一系列数据值称为观测值,又称观察。
2.1.2 变量给定特性的数据值的集合组成了变量。
在SAS数据集中,每一个观测值是由各个变量的数据值组成。
在数据集中每一列数据是一个变量。
1.命名SAS变量名和其他名称如数据集名等的命名规则都相同,它可以多至8个字符长,第一个字符必须是字母(A,B,C,….,Z),或者是下划线(_),后面的字符可以是数字或下划线。
空格不能出现在SAS名中,特殊字符(如$,@,#)也不允许在SAS名中使用。
SAS 系统保留了一定的名称作为特殊的变量名,这些名称以下划线开始和结尾。
如_N_和_ERROR_等。
2.变量特性SAS变量有两种类型,数值型和字符型。
字符型变量在名后用一“$”号来表示。
除了他们的类型外,S A S变量还有下列特性:长度、输入格式、输出格式和标记。
变量的长度特性,是指在SAS数据集中用以存储它的每一个值的字节数。
缺省长度是8(为了存储长度与缺省值不同的变量,需使用LENGTH语句)。
变量的特性,或者明确地说明,或者在它们首次出现时的上下文中给出定义。
例如:DATA A;C='BAD';PUT C;C='GOOD';PUT C;RUN;C在第一次出现时已被定义成字符型变量,长度为3,因此第二次再向c中赋值GOOD时,由于c已被定义成长度为3,故c中只存有‘GOO’。
PUT语句的作用是把变量的值输出到LOG窗口。
变量的其他特性将在后面逐渐介绍。
3.变量清单的简化表示在SAS程序中定义了完整的变量清单后,就可以在后面许多语句中使用缩写变量清单形式。
名称形式缩写意义形如:X1,X2,…Xn的带有序号的名称X1-Xn 从X1到Xn的所有变量形如 X P A * 的名称范围X-A 从X到A的所有变量X-NUMERIC-A 从X到A的所有数值变量X-CHARACTER-A 从X到A的所有字符变量特殊SAS名称_NUMERIC _ 所有数值变量_CHARACTER _ 所有字符变量_ALL _ 所有变量例如:INPUT NAME $ VARl VAR2 VAR3 VAR4 VAR5 VAR6;也可以写成:INPUT NAME $ VARl一VAR6;注意字符型变量NAME不包含在这个缩写清单中,有序号的变量不必全部列出,这些变量要求类型相同,或全是数值型的或全是字符型的。
第2章 SAS编程基础

SAS 统计分析与应用 从入门到精通 四、数据输出
2、输出到外部文件
联合使用PUT语句和FILE语句,可以实现将数据输出到外部文件。 其中,FILE语句用于定义要输出外部文件,其语句格式为: FILE ‘文件路径’ <选项>; 文件路径包括完整的路径和文件名。选项用来控制输出数据如何 被写入到输出文件中。 PUT语句用于实现数据输出,跟INPUT语句的格式类似,但功能 正好相反。PUT语句通过采用不同语句格式可以将数据按不同的形式 输出,基本的输出形式有:按列输出、列表输出和格式化输出。
SA程序结构 3、过程步
过程步要求SAS从系统中调出一个过程(对应一种统计分析方法或 一种数据呈现功能),并对指定的数据集执行这个过程。过程步以 PROC语句开头,指出调用的过程名和要分析的数据集,其后的各语句 用来指定调用过程的各个参数。过程步的一般形式为:
SAS 统计分析与应用 从入门到精通 二、变量、常数、表达式和函数
3、表达式
表达式由运算对象和运算符组成,它在被执行后产生一个目标值。 运算对象一般是变量和常数,运算符主要包括算术运算符、比较运算符、 逻辑运算符、函数和括号等。 下面的几个例子都是表达式:
Y=X+1; LOG(X); N<500;
SAS 统计分析与应用 从入门到精通 二、变量、常数、表达式和函数
SAS表达式中的基本运算符包括: 算术运算符:+(加)、*(乘)、-(减)、**(乘 方)、/(除) 比较运算符:= 或 EQ(等于)、^= 或 NE(不等于)、 > 或 GT(大于)、< 或 LT(小于)、>= 或 GE(大于或 等于)、<= 或 LE(小于或等于)、IN(在列表中)、 NOTIN(不在列表中) 逻辑运算符:& 或 AND(与)、| 或 OR(或)、^ 或 NOT(非) 其他运算符:<>(最大)、><(最小)、||(连接)
2SAS编程简介2

SAS程序由数据步和过程步构成, 程序由数据步和过程步构成, 程序由数据步 构成 数据步(Data Step)的设计灵活多样, 数据步( )的设计灵活多样, 过程步(Proc Step)的设计比较规范, 的设计比较规范, 过程步 的设计比较规范 我们先重点介绍SAS系统数据步(Data 系统数据步( 我们先重点介绍 系统数据步 Step)编程。 )编程。
– – – 以字母或下划线开头。 由字母、数字、下划线构成。 应用中不区分大小写英文字母。
每个SAS语句都必须以半角分号“;”作为结束符。 语句都必须以半角分号“ 作为结束符 作为结束符。 每个 语句都必须以半角分号 SAS数据步语句以 数据步语句以DATA关键字开头,以RUN语句结尾。 关键字开头, 语句结尾。 数据步语句以 关键字开头 语句结尾 DATA步中可以使用 步中可以使用INPUT、CARDS、INFILE、SET、 步中可以使用 、 、 、 、 MERGE等语句指定数据源,也可以用赋值、分支、循 等语句指定数据源, 等语句指定数据源 也可以用赋值、分支、 环等程序流程控制语句实现复杂情况处理, 环等程序流程控制语句实现复杂情况处理,完成复杂数 据结构的输入和数据准备。 据结构的输入和数据准备。
窗口内容保存----激活窗口后
– 在命令行(窗)键入 file “路径\文件名” 在命令行( 路径\ 路径 文件名” – 点击图标 – 在file下拉菜单中选“save ”或“save as file下拉菜单中选 下拉菜单中选“ as” 或
二、SAS程序和SAS数据集
常用的快捷键 –F4 recall命令 用于edit 命令, edit窗 F4 recall命令,用于edit窗,将前面提交的程序 调回, 调回,可多次使用 –F5 切换到edit edit窗 F5 切换到edit窗 –F6 切换到log log窗 F6 切换到log窗 –F7 切换到output output窗 F7 切换到output窗 –F8 submit命令 F8 submit命令 –Ctrl-E 清除当前窗口的内容。 edit窗被清除的内 Ctrl清除当前窗口的内容。 edit窗被清除的内 Ctrl 容不能用F4 F4调回 容不能用F4调回
SAS编程基础

第一章:DATA 步阐述DA TA 步是SAS 的一个关键步,正确理解其执行过程将会学习起来更方便。
1)DATA 步是一个循环,数据是一行一行地执行(与SQL 过程不同,它是对整个数据集进行操作);2)DA TA 步在执行时,将数据放在PDV 中,在这里将数据整理成想要的格式3)有三种情况可将PDV 中的数据输出到数据集中,OUTPUT 语句,return 语句,data 步结尾(;或run;)Output 语句:此语句出现在data 步中间时,将PDV 中数据输出到SAS 数据后,继续执行直到data 步结尾。
Return 语句:将pdv 中数据输出到SAS 数据集后,返回到data 步开头,执行下一次循环。
data 步结尾(;或run;):缺省形式,也是必须语句,否则DATA 步不完整。
相当于一个放在data 步结尾处的return 语句。
注:当一个DATA 步中含有OUTPUT 语句时,当执行到语句output 时才输出PDV 中的数据,data 步结尾处的默认输出不起作用。
4)退出SAS 数据步:stop 语句和abort 语句;其作用是退出DATA 步,并丢掉PDV 中的数据。
data aa; input ss pay; if _error_ then delete ; pi=constant('PI');/*常数pi*/ format pi 15.13; e=CONSTANT('e');/*常数e*/ datalines ; 111 100 aaa 200 444 300 run ; proc print ;run ;结果相同(只读取了第一条观测),左边在LOG 窗口显示一个提示,右边则显示一个出错信息注:abort<return|abend>,退出SaS 系统(与正常退出相同,有相关提示)。
5)DA TA 步的短路: IF expression ;(子集IF 语句):若表达式是假,系统立即返回到DATA 步开头,继续执行下一条观测,且不处理当前观测。
第二章[SAS编程基础]
![第二章[SAS编程基础]](https://img.taocdn.com/s3/m/0edbd595964bcf84b8d57b26.png)
第二章[SAS编程基础]————————————————————————————————作者:————————————————————————————————日期:第二章 SAS 编程基础第一节常量、变量与观测值2.1.1 观测值描述单一整体,如个别人、一个实验动物、一年、一个地区某些特性的一系列数据值称为观测值,又称观察。
2.1.2 变量给定特性的数据值的集合组成了变量。
在SAS数据集中,每一个观测值是由各个变量的数据值组成。
在数据集中每一列数据是一个变量。
1.命名SAS变量名和其他名称如数据集名等的命名规则都相同,它可以多至8个字符长,第一个字符必须是字母(A,B,C,….,Z),或者是下划线(_),后面的字符可以是数字或下划线。
空格不能出现在SAS名中,特殊字符(如$,@,#)也不允许在SAS名中使用。
SAS 系统保留了一定的名称作为特殊的变量名,这些名称以下划线开始和结尾。
如_N_和_ERROR_等。
2.变量特性SAS变量有两种类型,数值型和字符型。
字符型变量在名后用一“$”号来表示。
除了他们的类型外,S A S变量还有下列特性:长度、输入格式、输出格式和标记。
变量的长度特性,是指在SAS数据集中用以存储它的每一个值的字节数。
缺省长度是8(为了存储长度与缺省值不同的变量,需使用LENGTH语句)。
变量的特性,或者明确地说明,或者在它们首次出现时的上下文中给出定义。
例如:DATA A;C='BAD';PUT C;C='GOOD';PUT C;RUN;C在第一次出现时已被定义成字符型变量,长度为3,因此第二次再向c中赋值GOOD时,由于c已被定义成长度为3,故c中只存有‘GOO’。
PUT语句的作用是把变量的值输出到LOG窗口。
变量的其他特性将在后面逐渐介绍。
3.变量清单的简化表示在SAS程序中定义了完整的变量清单后,就可以在后面许多语句中使用缩写变量清单形式。
实验2 SAS编程基础

图2-3 数据集sy2_3
【实验 2-4】读取 Excel 文件 sy2_2.xls(如表 2-1 所示)建立数据集 work.sy2_4。已知 Excel 文件 sy2_2.xls 存放在文件夹“d:\sas_shiyan\原始数据”中。
首先将表 2-1 修改为如图 2-4 所示的 Excel 表 sy2_4.xls,并存放在 d:\sas_shiyan\原始数据 中。
SAS 软件与统计应用实验
徐雅静、汪远征编著
实验 2 SAS 编程基础
SAS 语言和其它计算机语言一样,也有其专有的词汇(即关键字)和语法。关键字、名 字、特殊字符和运算符等按照语法规则排列组成 SAS 语句,一个 SAS 程序由若干数据步、 过程步组合而成,而每一个程序步通常由若干语句构成。SAS 程序是在 Editor 窗口中进行编 辑,提交运行后可以在 Log 窗口中显示有关信息和提示,在 Output 窗口显示运行的结果。
SAS 软件与统计应用实验
徐雅静、汪远征编著
(1) 建立自己的逻辑库(以自己名字的拼音命名); (2) 用数据步把此数据输入到 SAS 数据集并存放在自己的逻辑库中; (3) 列表显示男性顾客购买金额超过 1000 的那些人; (4) 按金额降序排序并输出结果; (5) 把数据拆分为包含姓名、性别、地区的一个数据集和包含姓名、日期、金额的一个 数据集; (6) 用 MERGE 和 BY 合并上一步拆开的两个数据集。 【练习 2-2】SASHELP.PRDSALE 是某国际公司在各地销售记录。变量 ACTUAL 是实际 销售额,PREDICT 是预测的销售额,COUNTRY 是卖往的国家,REGION 是地区,DIVISION 是卖往的部门,PRODTYPE 是产品类型,PRODUCT 是具体的产品名称,QUARTER,YEAR, MONTH 是销售时间的季度、年、月。编程进行如下操作: (1) 用 print 过程列出数据集中美国的销售记录,求给各列加上合理的中文标签; (2) 把数据集按产品类别、年、月排序后按产品类别分类列出年、月、实际销售额,不 显示观测序号。
第二章、SAS编程基础 第一节、SAS语言的基本规定

第二章、SAS编程基础
5
3、函数
大约有13类,140多种。 统计软件所特有的几种函数:
1)随机函数:产生随机数 RANUNI()、RANNOR()RANEXP()、
RANBIN()等,其中()中的参数应为0或5位、 6位、7位奇数。 2)概率(分布)函数: PROBNORM(x) PROBBNML(p,n,m) POISSON(a,m)等, 注:函数名大小写无影响。
第二章、SAS编程基础
15
二、输出语句(PUT语句)
一般与FILE语句配合使用,将内容输出到File 指定的文件中或Log 、Output 窗口中.
1)自由格式输出 格式:Put 变量[$] ; 例如: Data new; Input name$ sex $ age; File “c:\dat.txt”; Put name$ sex$ age; Cards; Wang f 18 Liu m 16 ;
格式:INPUT[@][#] 变量 [@][@@]; @表示把控制指针保持在当前行,下一
个input语句仍在当前行读数。例1:
data marks; Input grade @; If grade=1 then input math phys chem; Else input hist geog Chinese; Cards; 1 80 90 78 2 79 93 87 Proc print ; run;
第二章、SAS编程基础
14
@@表示当前数据行含有多个观察值,input读 完一个观察后,控制指针仍保持在当前行,接 着读下一个数据。例2:
Data product; Input year x1 x2; Cards; 1997 50 60 1998 70 75 1999 80 87 Pro,还有算术函数、截取函数、数学函数、 三角函数、字符函数、日期与时间函数,这些 函数的用法与其它软件大致相同等等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*
乘
A*B*3
/ +
除 加
X/A 5+C
-
减
C-A
输出结果: X=22.917651494 Y=9.3333333333 Y=.
比较算符
比较算符应用。 例2.9 比较算符应用。 if x<y then c=5; else c=12;
算符 ** * / + -
含义 乘方 乘 除 加 减
举例 A**2.5=A2.5 A*B*3 X/A 5+C C-A
第2章 SAS编程基础 章 编程基础
清华大学经管学院 朱世武 Zhushw@ Resdat样本数据: 样本数据: 样本数据 SAS论坛: 论坛: 论坛
SAS语言元素 语言元素
主要的SAS语言元素包括: 语言元素包括: 主要的 语言元素包括 数据集选项; 数据集选项; 输出和输入格式; 输出和输入格式; 函数和CALL子程序; 子程序; 函数和 子程序 应用响应测量宏; 应用响应测量宏; 语句; 语句; SAS系统选项; 系统选项; 系统选项 表达式。 表达式。 表达式部分内容很多,后面章节有专门介绍。 表达式部分内容很多,后面章节有专门介绍。
例2.11 连接带空格的字符值。 data; X=’GOOD ’; Y=’MORNING’; Z=X||Y; put Z=; run; 结果显示为 Z=GOOD MORNING NOTE: 数据集 WORK.DATA1 有 1 个观测和 3 个变量。
SAS变量 变量
SAS变量分为数值变量和字符变量。 数值变量 数值变量是SAS系统以浮点(floating-point)方式存储的数 据变量,数值变量包括日期和时间。 数值变量的值只能是数值。 字符变量 字符变量可以由阿拉伯字母、数字0-9以及其它一些特殊字 符组成。 字符变量的值可以是字符、字母、特殊字符和数值。字符变 量名后跟一个美元号($)表示该变量是字符型而不是数值 型。
SAS语言元素 语言元素
数据集选项
数据集选项用在SAS数据集名称后的括号中,多个选项之间用 空格隔开。 括号中的数据集选项可以对数据集进行如下操作: 重新命名变量; 选择需要的观测; 输出数据集中保留或删除的变量; 数据集加密。
语句格式: Data-set-name(Data-set-options) (option-1=value-1<...option-n=value-n>) 数据集选项举例。 例2.1 数据集选项举例。 data scores(keep=team game1 game2 game3); /*scores中只保留team,game1game2 game3这4个变量) proc print data=new(drop=year); /*去掉变量year*/ set old(rename=(date=Start_Date)); /* 将date改名*/
字符常数
引用带引号的字符常数。 例2.6 引用带引号的字符常数。 name=’TOM”S’; name=”TOM’S”; /*例中,两语句等价。*/ 要注意的是,字符常数是由引号括起来的,但是字符变量 的名称则没有引号,也就是说字符常数不能作为字符变量 的名称。
日期时间常数
引用日期时间常数。 例2.7 引用日期时间常数。 ’1jan2000’d; ’01jan00’d; ’9:25’t; ’18jan00:9:27:25’dt if begin=’01JAN2000’d then end=’31DEC2000’d;
1
^ >< <> * 2 / + 3 4 || < <= = 5 ^= >= ^> ^< 6 7 & |
SAS程序 程序
SAS程序由多个SAS语句构成。SAS程序中的 语句可分为两类步骤: • 数据步,用来处理输入数据 ; • 过程步,通过一系列SAS语句来调用和执行程 序,通常以一个SAS数据集作为输入数据。 。
有效的SAS语句。 语句。 例2.2 有效的 语句
data data1; /* data为关键词,data1为SAS名 */ data _null_; /* _null_为SAS名 */ put name $ 8.; /* put为关键词,name为SAS名,$8.为 输出格式*/ format date yymmdd10.; proc means data=ResDat.class; /* proc为关键词,means为 过程名 */ infile “d:\ResDat\class.txt”; do I=1 to 100; x=y+1; sumx+x; run;
SAS系统选项 系统选项
系统选项用来控制SAS的运行方式,如SAS系统启 动,硬件软件的连接,SAS程序的运行等。 语句格式: OPTIONS option(s); option 设定一个或多个系统选项,任何系统选项都 有一个默认设置。
例2.3 设定选项 OPTIONS obs=5;/*取数据集前五个观测*/ Data one; Set ResDat.class; Run;
输入和输出格式
输出格式format是SAS用来确定如何输出或写出数 输出格式 据值的指令,用FORMAT控制数据值在输出时所使 用的格式。 输入格式informat是SAS用来确定如何将数据读入 输入格式 变量的指令。 如果在输入或输出数据集的过程中没有设定变量的 输入和输出格式,系统会自动使用原数据集中的这 个变量原有的输入输出格式。
优先级
算符 ** + -
含义 乘方 正 负 非 最小 最大 乘 除 加 减 连接 小于 小于等于 等于 不等于 大于等于 不大于 不小于 与 或
运算次序
表达式运算次序准 则: •先计算括弧里的表 达式; •先执行较高优先级 的运算; •相同优先级的算符, 先执行左边的运算。 但对最高优先级1, 先执行右边的运算。
书写规则
SAS语句的书写规则灵活自由: 语句可在行的任一列开始; 一个语句可以分写为多行; 多个语句可以写在同一行; 语句中各项之间至少用一个空格或特殊字符隔开; 应遵守的书写规则: 不同程序步间留空行; 每条语句都要另起行。 比较规范的书写有助于阅读和检查,还可以减少书写错误。 注释语句的两种格式: /* 注释内容 */ * 注释内容;
SAS算符 算符
SAS算符是一些符号,其作用是进行计算、比较等。
算术算符
例2.8 算术算符应用。 算术算符应用。 data; X=3.5**2.5; put X=; Y=9+1/3; put Y=; X=.; Y=1+X; put Y=; /*Y也是缺失值*/ run;
算符
含义
Hale Waihona Puke 举例**乘方
A**2.5=A2.5
数据步
数据步用来处理输入数据。在数据步中,可 以创建SAS数据集(包括SAS数据文件和数据视 图)。数据步可以使用的输入数据包括数据源, 外部接入文件或SAS数据集。然后对这些数据进 行处理,如计算,挑选。数据步的输出可以是多 种形式,如SAS数据集或报表,也可以将结果写 到日志窗口或其他外部文件中。
比较算符经常出现在IF语句里。
比较准则: 数值和字符都可以比; 结果为真赋值1,假赋值0; 字符值从左到右逐个按ASCII码排列序列进行比较; 缺失值参加比较时,它比任何有效值都小。
逻辑算符
算符 & | ^ 等价形式 AND OR NOT 含义 与 或 非
其它算符
:连接字符算符“||”
连接多个变量和常数。 例2.10 连接多个变量和常数。 data; set ResDat.lstkinfo; result=’%a(’||stkcd||’,’||stknm||’);’; put result; run;
表达式
表达式由一系列操作符和操作对象构成,产生一个目标值。 使用表达式可以对变量作变换和赋值,创建新变量,计算新 数值以及控制条件语句的运行等。 操作对象有: 变量; 常数。 操作符包括: 算术算符; 比较算符; 逻辑算符; SAS函数; 括号。
例2.4 表达式里允许有空格。 Y=X+10; Y= X + 10; /*例中,两语句等价*/
过程步
过程步通过一系列SAS语句来调用和执行 程序,通常以一个SAS数据集作为输入数据。 使用过程步可以对数据集中的数据进行分析, 生成报表或其他结果。也可以修改过程步使其 只输出所需结果。另外,通过过程步也可以展 现数据集的信息。有关过程步的更多介绍可参 见SAS帮助文档。
SAS词段使用和命名规则 词段使用和命名规则
语句格式: <$>format<w>.<d> <$>informat<w>.<d> 格式说明: $ format Informat w d 指定为字符格式,如果该项空缺,则默认 是数值格式 规定有效SAS输出格式 规定有效SAS输入格式 设定输入输出的长度,一般来说是数据所 占的列的数目 设定数值数据中小数点的位数
一个SAS词段就是SAS编程语言中的一些字符组合而成的具有一 定意义的并不能被分割成更小的且能被独立使用的字符集合。一个 SAS词段最多包含32,767 个字符. 当一个词段遇到下列三种情况的任何一种就算做词段定义结束 一个新的词段的开头 一个空格 文本结束标志 SAS字段可以分为下面4种类型 names名称 literals文本词段 numbers数字 special characters特殊字符
函数和CALL子程序 子程序 函数和
SAS函数 函数对数据参数进行计算处理并返回一个值。大多数 函数 函数所使用的参数是由用户提供的,一小部分函数使用系 统提供的参数。 CALL子程序 子程序用来改变变量值,或执行一些系统功能。 子程序 CALL子程序类似于函数,但是不能在赋值语句中使用,所 有的SAS CALL子程序都只能被CALL语句使用。