SAS语言
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果当条件不成立时,不进行什么操作,可以不使用ELSE及其后面的语句。
上一页 下一页 返回本节首页
put x 10-20 .6 y 30-40 .6; 指定把X数值显示在第10-20列,保留6位小数,把 Y数值显示在第30-40列,保留6位小数。 在指定的列位置内,数值型数据靠右对齐,字符型 数据靠左对齐。变量为整数值或者字符型则不指定 小数位数。
上一页 下一页 返回本节首页
相对位置格式: 变量 宽度.小数位数(用于数值型) 变量 $宽度.(用于字符型) 如:put x 20.8 y 20.8; 使X占用第1-20列,8位小数, 右对齐;Y占用第21-40列,8位小数,右对齐。 而put name $10.;使name占用10列。
上一页 下一页 返回本节首页
二、SAS语言构成
㈠SAS语句 ㈡SAS表达式 ㈢SAS程序规则
上一页 下一页 返回本节首页
㈠SAS语句
SAS语言程序由数据步和过程步组成。数据步用来生
成数据集、计算、整理数据,过程步用来对数据进行分析、
报告。SAS语言的基本单位是语句,每个SAS语句一般由一
个关键字(如DATA,PROC,INPUT,CARDS,BY)开
上一页 下一页 返回本节首页
比较运算符
比较运算符用于比较常量、变量的值大小、相等,包括
=
^=
>
<
>=
<=
EQ
NE
GT
ቤተ መጻሕፍቲ ባይዱ
LT
GE
LE
IN
其中EQ等名字和=等特殊字符是同一运算符的等价写法。 比较运算符得到“真”或“假” 的结果,主要用于需要条件 的分支、循环等语句中。
上一页 下一页 返回本节首页
运算符IN是一个SAS特有的比较运算符,用来检查 某个变量的取值是否在一个给定列表中,例如: prov in ('Beijing', 'Tianjin', 'Shanghai', Chongqing')
上一页 下一页 返回本节首页
三、SAS用作一般高级语言
㈠赋值语句 ㈡输出语句 ㈢分支结构 ㈣循环结构
上一页 下一页 返回本节首页
㈠赋值语句
在SAS中用赋值语句计算一个值并存放到变量中。 格式为 变量名 = 表达式; 例如:
avg = (math + chinese)/2; isfem = (sex='女'); y=sin(x)**2; newv = .;
cards;
1 2 -3 4 -5
;
run;
上一页
下一页
返回本节首页
有时我们在条件成立时需要进行的操作无法用一个语句完成,这时可以使用SAS提供 的复合语句功能。例: data;
input x@@; /*不分行符@@的使用:每读入一天记录后,数据指针保持原位不换行,
继续读下一条记录*/
if x>0 then do; y=2*x; put 'f(' x ')=' y; end; else put 'Data Error!'; cards; 1 2 -3 4 -5 ; run;
LENGTH 语句一般应出现在变量定义之前,格式为:
LENGTH 变量名 $ 长度;例如:
LENGTH name $ 20;
上一页 下一页 返回本节首页
运算符
SAS运算符包括算术、比较、逻辑及其它的 运算符。
上一页 下一页 返回本节首页
算术运算符
算术运算符: + - * / **,运算优先级按通 常的优先规则。
上一页 下一页 返回本节首页
在SAS程序中可以加入注释,注释的内容用/*和 */在两端界定。这种注释可以出现在任何允许加入空 格的位置,可以占多行。SAS中一般只把注释单独 占一行或若干行,不把注释与程序代码放在同一行。 注释的另一个作用是把某些代码暂时屏蔽使其不能运 行。
上一页 下一页 返回本节首页
一、SAS语言简介
SAS系统强大的数据管理能力、计算能力、分析能 力依赖于作为其基础的SAS语言。SAS语言是一个专用的 数据管理与分析语言,它的数据管理功能类似于数据库语 言(如FoxPro),但又添加了一般高级程序设计语言的 许多成分(如分支、循环、数组),以及专用于数据管理、 统计计算的函数。SAS系统的数据管理、报表、图形、统 计分析等功能都可以用SAS语言程序来调用,只要指定要 完成的任务就可以由SAS系统按照预先设计好的程序去进 行,所以SAS 语言和FoxPro等一样是一种第四代语言。 这里简单介绍SAS语言的基本成分与规则。
输出占位不满指定宽度时,数值型数据向右对齐, 字符型数据向左对齐。
上一页 下一页 返回本节首页
⒊如果希望PUT语句的输出不产生换行,使下一个 PUT的结果可以显示在同一行,只要在PUT 语句结 尾处加一个@符。
上一页 下一页 返回本节首页
PUT语句的输出结果缺省情况下被送到运行记 录窗口。若在PUT语句之前用FILE语句可以改变 PUT语句的输出目的地。如,在PUT语句之前用file print;可以把PUT语句的输出转向到输出窗口。在 FILE语句中指定一个包含文件名的字符串可以把 PUT语句的输出转向到此文件中。比如file 'tmp.out'; 输出文件把后续的PUT语句输出转向到当前工作目录 下的文件“tmp.out”中,生成tmp.out 。注意当前 工作目录在SAS状态栏的右方显示,双击可以更改。 文件名也可以指定全路径,比如 “C:\SAS\TMP.OUT”。 上一页 下一页 返回本节首页
PUT 输出项表 输出项表中只能是变量或字符串,项间用空格隔开。如: data;
x=0.5; y=sin(x); put 'Sine function value of ' x 'is ' y; run; 结果将在运行记录窗口显示一行 Sine function value of 0.5 is 0.4794255386
分大小写。
上一页 下一页 返回本节首页
㈡SAS表达式
SAS数据步程序中的计算用表达式完成。表 达式把常量、变量、函数调用用运算符、括号连 接起来得到一个计算结果。
上一页 下一页 返回本节首页
常量
SAS常量主要有数值型、字符型两种,并且还提供 了用于表达日期、时间的数据类型。 数值型:数值型常数可以用整数、定点实数、科学计数法 实数表示。如:
12,-7.5,2.5E-10 字符型:字符型常数为两边用单撇号或两边用双撇号包围 的若干字符。如:
'Beijing',"Li Ming","李明"
上一页 下一页 返回本节首页
日期、时间:
日期型常数是在表示日期的字符串后加一个字母 d大小写均可),中间没有空格。时间型常数是在表 示时间的字符串后加一个字母t。日期时间型常数在 表示日期时间的字符串后加字母dt。 日期型:'13JUL1998'd 时间型:'14:20't 日期时间型:'13JUL1998:14:20:32'dt
salary2000表示工资收入在10002000之间不含2000age表示三岁以下含三岁的婴儿及妇女上一页下一页返回本节首页2000表示工资收入不在10002000之间复杂的逻辑表达式最好用括号表示其运算优先级以免误记优先规则并可利于阅读程序
Chapter2 SAS语言初步
一、SAS语言简介 二、SAS语言构成 三、SAS用作一般高级语言 四、SAS常用函数
㈢分支结构
⒈if...then...else 结构 ⒉SELECT结构
上一页 下一页 返回本节首页
1. if...then...else 结构
格式为:
IF 条件 THEN 语句;
ELSE 语句;
例: data temp1
input x @@;
if x>0 then put x '是正数';
else put x '是负数';
复杂的逻辑表达式最好用括号表示其运算优先级,以免误记 优先规则并可利于阅读程序。
上一页 下一页 返回本节首页
其它的运算符
其它的运算符: ||(两个连续的|号),两个字符串连接 <> 取两个运算值中较大一个的(比如3<>5结果为5) >< 取两个运算值中较小一个的 (比如3><5结果为3) 注意:<>符在有些语言中用作“不等于”比较算符,而SAS 中用 法则较特殊。
头,包含SAS名字、特殊字符、运算符等,以分号结束。
SAS关键字是用于SAS语句开头的特殊单词,SAS语句除了
赋值、累加、注释、空语句以外都以关键字开头。SAS名字
在SAS程序中标识各种SAS成分,如变量、数据集、数据库,
等等。SAS 名字由1到8个字母、数字、下划线组成,第一
个字符必须是字母或下划线。SAS关键字和SAS 名字都不
上一页 下一页 返回本节首页
因为SAS是一种数据处理语言,而实际数据中 经常会遇到缺失值,比如没有观测到数值,被访问人 不肯答,等等。SAS中用一个单独的小数点来表示 缺失值常量。
上一页 下一页 返回本节首页
变量
SAS变量的基本类型有两种:数值型和字符型。日期、时 间等变量存为数值型(实际记录为距1960/01/01的天数)。 SAS的数值型变量可以存储任意整数、定点实数、浮点实数, 一般不关心其区别。数值型变量在数据集中的存贮一般使用8 个字节。SAS的字符型变量缺省的长度是8个字符,但是如果 在INPUT 语句中输入字符型变量时指定了长度则不受此限制。 可以用LENGTH语句直接指定变量长度。
上一页 下一页 返回本节首页
PUT说明
⒈在PUT语句中,若在变量名后加“=”,则指 定输出项可以显示带有变量名的输出结果。 比如把上程序中的PUT语句改为
put x= y=; 则结果在LOG窗口显示为 X=0.5 Y=0.4794255386
上一页 下一页 返回本节首页
⒉指定变量输出项的具体列位置及小数位数 绝对位置格式: 变量 起始列-结束列.小数位数 比如,
SAS程序包括数据步和过程步两种结构,每一个 步是一段相对完整的可以单独运行的程序。数据步用 来生成、整理数据和自编程计算,过程步调用SAS 已编好的处理过程对数据进行处理。自己用SAS编 程序进行计算主要在数据步中进行。
上一页 下一页 返回本节首页
SAS数据步以DATA语句开头,以RUN语句结尾。 DATA步中可以使用INPUT、CARDS、INFILE 、 SET、MERGE等语句指定数据来源输入数据,也可 以用赋值、分支、循环等编程结构直接生成数据或对 输入的数据进行修改。
上一页 下一页 返回本节首页
三、SAS用作一般高级语言
SAS是一种专用的数据处理、统计计算语言,但是它也包 含一般的高级语言编程能力并扩充了许多数学、统计等方面的函 数。
SAS语言的编程计算能力主要由SAS数据步提供。DATA语 句以关键字DATA 开头,后面给出一个数据集名,例如:
data out1; 则在本数据步要生成的数据集,其名字为out1。我们也可以 省略数据集名,这时SAS自动生成一个临时数据集名。也可以使 用特殊名字_NULL_ ,表示本数据步不生成数据集。
其中第一个赋值语句用一个公式计算平均分数。第二个生 成一个取值为0或1的变量,性别为女时为1,否则为0。第三个 使用了正弦函数和乘方运算。第四个给变量赋了缺失值。
上一页 下一页 返回本节首页
㈡输出语句
SAS数据步的输出一般是数据集,用赋值语句计算的结果会自 动写入数据集。SAS也提供了一个PUT语句用于立即打印输出结果。 PUT语句的语法:
可以判断变量prov的取值是否为四个直辖市之一。
上一页 下一页 返回本节首页
逻辑运算符
逻辑运算符用来连接比较得到的结果以构成复杂的条件, 有三种逻辑运算符: &(AND) |(OR) ^(NOT) 。其中AND是&(与) 的等价写法,OR是|(或)的等价写法,NOT是^(非)的等价写 法。 例如:
(salary >= 1000) AND (salary < 2000) 表示工资收入在1000-2000之间(不含2000) (age <= 3) OR (sex = '女') 表示三岁以下(含三岁)的婴儿及妇女
上一页 下一页 返回本节首页
NOT ((salary >= 1000) AND (salary < 2000)) 表示工资收入不在1000-2000之间
上一页 下一页 返回本节首页
㈢SAS程序规则
SAS程序由语句构成。每个语句以分号结尾。 在SAS程序中,一个语句可以写到多行(不需任何 续行标志),也可以在一行连续写几个语句。SAS 语言中只要允许用一个空格的地方就可以加入任意多 个空白(空格、制表符、回车),允许用空格的地方 是名字周围、运算符周围。另外,SAS关键字和名 字大小写不分,但字符型数据值要区分大小写,比如 "Beijing" 和"BEIJING"被认为是不同的数据值。
上一页 下一页 返回本节首页
put x 10-20 .6 y 30-40 .6; 指定把X数值显示在第10-20列,保留6位小数,把 Y数值显示在第30-40列,保留6位小数。 在指定的列位置内,数值型数据靠右对齐,字符型 数据靠左对齐。变量为整数值或者字符型则不指定 小数位数。
上一页 下一页 返回本节首页
相对位置格式: 变量 宽度.小数位数(用于数值型) 变量 $宽度.(用于字符型) 如:put x 20.8 y 20.8; 使X占用第1-20列,8位小数, 右对齐;Y占用第21-40列,8位小数,右对齐。 而put name $10.;使name占用10列。
上一页 下一页 返回本节首页
二、SAS语言构成
㈠SAS语句 ㈡SAS表达式 ㈢SAS程序规则
上一页 下一页 返回本节首页
㈠SAS语句
SAS语言程序由数据步和过程步组成。数据步用来生
成数据集、计算、整理数据,过程步用来对数据进行分析、
报告。SAS语言的基本单位是语句,每个SAS语句一般由一
个关键字(如DATA,PROC,INPUT,CARDS,BY)开
上一页 下一页 返回本节首页
比较运算符
比较运算符用于比较常量、变量的值大小、相等,包括
=
^=
>
<
>=
<=
EQ
NE
GT
ቤተ መጻሕፍቲ ባይዱ
LT
GE
LE
IN
其中EQ等名字和=等特殊字符是同一运算符的等价写法。 比较运算符得到“真”或“假” 的结果,主要用于需要条件 的分支、循环等语句中。
上一页 下一页 返回本节首页
运算符IN是一个SAS特有的比较运算符,用来检查 某个变量的取值是否在一个给定列表中,例如: prov in ('Beijing', 'Tianjin', 'Shanghai', Chongqing')
上一页 下一页 返回本节首页
三、SAS用作一般高级语言
㈠赋值语句 ㈡输出语句 ㈢分支结构 ㈣循环结构
上一页 下一页 返回本节首页
㈠赋值语句
在SAS中用赋值语句计算一个值并存放到变量中。 格式为 变量名 = 表达式; 例如:
avg = (math + chinese)/2; isfem = (sex='女'); y=sin(x)**2; newv = .;
cards;
1 2 -3 4 -5
;
run;
上一页
下一页
返回本节首页
有时我们在条件成立时需要进行的操作无法用一个语句完成,这时可以使用SAS提供 的复合语句功能。例: data;
input x@@; /*不分行符@@的使用:每读入一天记录后,数据指针保持原位不换行,
继续读下一条记录*/
if x>0 then do; y=2*x; put 'f(' x ')=' y; end; else put 'Data Error!'; cards; 1 2 -3 4 -5 ; run;
LENGTH 语句一般应出现在变量定义之前,格式为:
LENGTH 变量名 $ 长度;例如:
LENGTH name $ 20;
上一页 下一页 返回本节首页
运算符
SAS运算符包括算术、比较、逻辑及其它的 运算符。
上一页 下一页 返回本节首页
算术运算符
算术运算符: + - * / **,运算优先级按通 常的优先规则。
上一页 下一页 返回本节首页
在SAS程序中可以加入注释,注释的内容用/*和 */在两端界定。这种注释可以出现在任何允许加入空 格的位置,可以占多行。SAS中一般只把注释单独 占一行或若干行,不把注释与程序代码放在同一行。 注释的另一个作用是把某些代码暂时屏蔽使其不能运 行。
上一页 下一页 返回本节首页
一、SAS语言简介
SAS系统强大的数据管理能力、计算能力、分析能 力依赖于作为其基础的SAS语言。SAS语言是一个专用的 数据管理与分析语言,它的数据管理功能类似于数据库语 言(如FoxPro),但又添加了一般高级程序设计语言的 许多成分(如分支、循环、数组),以及专用于数据管理、 统计计算的函数。SAS系统的数据管理、报表、图形、统 计分析等功能都可以用SAS语言程序来调用,只要指定要 完成的任务就可以由SAS系统按照预先设计好的程序去进 行,所以SAS 语言和FoxPro等一样是一种第四代语言。 这里简单介绍SAS语言的基本成分与规则。
输出占位不满指定宽度时,数值型数据向右对齐, 字符型数据向左对齐。
上一页 下一页 返回本节首页
⒊如果希望PUT语句的输出不产生换行,使下一个 PUT的结果可以显示在同一行,只要在PUT 语句结 尾处加一个@符。
上一页 下一页 返回本节首页
PUT语句的输出结果缺省情况下被送到运行记 录窗口。若在PUT语句之前用FILE语句可以改变 PUT语句的输出目的地。如,在PUT语句之前用file print;可以把PUT语句的输出转向到输出窗口。在 FILE语句中指定一个包含文件名的字符串可以把 PUT语句的输出转向到此文件中。比如file 'tmp.out'; 输出文件把后续的PUT语句输出转向到当前工作目录 下的文件“tmp.out”中,生成tmp.out 。注意当前 工作目录在SAS状态栏的右方显示,双击可以更改。 文件名也可以指定全路径,比如 “C:\SAS\TMP.OUT”。 上一页 下一页 返回本节首页
PUT 输出项表 输出项表中只能是变量或字符串,项间用空格隔开。如: data;
x=0.5; y=sin(x); put 'Sine function value of ' x 'is ' y; run; 结果将在运行记录窗口显示一行 Sine function value of 0.5 is 0.4794255386
分大小写。
上一页 下一页 返回本节首页
㈡SAS表达式
SAS数据步程序中的计算用表达式完成。表 达式把常量、变量、函数调用用运算符、括号连 接起来得到一个计算结果。
上一页 下一页 返回本节首页
常量
SAS常量主要有数值型、字符型两种,并且还提供 了用于表达日期、时间的数据类型。 数值型:数值型常数可以用整数、定点实数、科学计数法 实数表示。如:
12,-7.5,2.5E-10 字符型:字符型常数为两边用单撇号或两边用双撇号包围 的若干字符。如:
'Beijing',"Li Ming","李明"
上一页 下一页 返回本节首页
日期、时间:
日期型常数是在表示日期的字符串后加一个字母 d大小写均可),中间没有空格。时间型常数是在表 示时间的字符串后加一个字母t。日期时间型常数在 表示日期时间的字符串后加字母dt。 日期型:'13JUL1998'd 时间型:'14:20't 日期时间型:'13JUL1998:14:20:32'dt
salary2000表示工资收入在10002000之间不含2000age表示三岁以下含三岁的婴儿及妇女上一页下一页返回本节首页2000表示工资收入不在10002000之间复杂的逻辑表达式最好用括号表示其运算优先级以免误记优先规则并可利于阅读程序
Chapter2 SAS语言初步
一、SAS语言简介 二、SAS语言构成 三、SAS用作一般高级语言 四、SAS常用函数
㈢分支结构
⒈if...then...else 结构 ⒉SELECT结构
上一页 下一页 返回本节首页
1. if...then...else 结构
格式为:
IF 条件 THEN 语句;
ELSE 语句;
例: data temp1
input x @@;
if x>0 then put x '是正数';
else put x '是负数';
复杂的逻辑表达式最好用括号表示其运算优先级,以免误记 优先规则并可利于阅读程序。
上一页 下一页 返回本节首页
其它的运算符
其它的运算符: ||(两个连续的|号),两个字符串连接 <> 取两个运算值中较大一个的(比如3<>5结果为5) >< 取两个运算值中较小一个的 (比如3><5结果为3) 注意:<>符在有些语言中用作“不等于”比较算符,而SAS 中用 法则较特殊。
头,包含SAS名字、特殊字符、运算符等,以分号结束。
SAS关键字是用于SAS语句开头的特殊单词,SAS语句除了
赋值、累加、注释、空语句以外都以关键字开头。SAS名字
在SAS程序中标识各种SAS成分,如变量、数据集、数据库,
等等。SAS 名字由1到8个字母、数字、下划线组成,第一
个字符必须是字母或下划线。SAS关键字和SAS 名字都不
上一页 下一页 返回本节首页
因为SAS是一种数据处理语言,而实际数据中 经常会遇到缺失值,比如没有观测到数值,被访问人 不肯答,等等。SAS中用一个单独的小数点来表示 缺失值常量。
上一页 下一页 返回本节首页
变量
SAS变量的基本类型有两种:数值型和字符型。日期、时 间等变量存为数值型(实际记录为距1960/01/01的天数)。 SAS的数值型变量可以存储任意整数、定点实数、浮点实数, 一般不关心其区别。数值型变量在数据集中的存贮一般使用8 个字节。SAS的字符型变量缺省的长度是8个字符,但是如果 在INPUT 语句中输入字符型变量时指定了长度则不受此限制。 可以用LENGTH语句直接指定变量长度。
上一页 下一页 返回本节首页
PUT说明
⒈在PUT语句中,若在变量名后加“=”,则指 定输出项可以显示带有变量名的输出结果。 比如把上程序中的PUT语句改为
put x= y=; 则结果在LOG窗口显示为 X=0.5 Y=0.4794255386
上一页 下一页 返回本节首页
⒉指定变量输出项的具体列位置及小数位数 绝对位置格式: 变量 起始列-结束列.小数位数 比如,
SAS程序包括数据步和过程步两种结构,每一个 步是一段相对完整的可以单独运行的程序。数据步用 来生成、整理数据和自编程计算,过程步调用SAS 已编好的处理过程对数据进行处理。自己用SAS编 程序进行计算主要在数据步中进行。
上一页 下一页 返回本节首页
SAS数据步以DATA语句开头,以RUN语句结尾。 DATA步中可以使用INPUT、CARDS、INFILE 、 SET、MERGE等语句指定数据来源输入数据,也可 以用赋值、分支、循环等编程结构直接生成数据或对 输入的数据进行修改。
上一页 下一页 返回本节首页
三、SAS用作一般高级语言
SAS是一种专用的数据处理、统计计算语言,但是它也包 含一般的高级语言编程能力并扩充了许多数学、统计等方面的函 数。
SAS语言的编程计算能力主要由SAS数据步提供。DATA语 句以关键字DATA 开头,后面给出一个数据集名,例如:
data out1; 则在本数据步要生成的数据集,其名字为out1。我们也可以 省略数据集名,这时SAS自动生成一个临时数据集名。也可以使 用特殊名字_NULL_ ,表示本数据步不生成数据集。
其中第一个赋值语句用一个公式计算平均分数。第二个生 成一个取值为0或1的变量,性别为女时为1,否则为0。第三个 使用了正弦函数和乘方运算。第四个给变量赋了缺失值。
上一页 下一页 返回本节首页
㈡输出语句
SAS数据步的输出一般是数据集,用赋值语句计算的结果会自 动写入数据集。SAS也提供了一个PUT语句用于立即打印输出结果。 PUT语句的语法:
可以判断变量prov的取值是否为四个直辖市之一。
上一页 下一页 返回本节首页
逻辑运算符
逻辑运算符用来连接比较得到的结果以构成复杂的条件, 有三种逻辑运算符: &(AND) |(OR) ^(NOT) 。其中AND是&(与) 的等价写法,OR是|(或)的等价写法,NOT是^(非)的等价写 法。 例如:
(salary >= 1000) AND (salary < 2000) 表示工资收入在1000-2000之间(不含2000) (age <= 3) OR (sex = '女') 表示三岁以下(含三岁)的婴儿及妇女
上一页 下一页 返回本节首页
NOT ((salary >= 1000) AND (salary < 2000)) 表示工资收入不在1000-2000之间
上一页 下一页 返回本节首页
㈢SAS程序规则
SAS程序由语句构成。每个语句以分号结尾。 在SAS程序中,一个语句可以写到多行(不需任何 续行标志),也可以在一行连续写几个语句。SAS 语言中只要允许用一个空格的地方就可以加入任意多 个空白(空格、制表符、回车),允许用空格的地方 是名字周围、运算符周围。另外,SAS关键字和名 字大小写不分,但字符型数据值要区分大小写,比如 "Beijing" 和"BEIJING"被认为是不同的数据值。