2.SAS基础_表达式及函数简介
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
变量类型转换
字符自动转换为数值(无法转换为数值时,取缺失值)
data; X=1; /*X为数值变量 */ Y=’10’; /*Y为字符变量 */ X=Y; /*将字符变量赋值给一个数值变量时, 自动将字符变量Y转换为数值变量 */ run; data; X=1; /*X为数值变量 */ Y=’10’; /*Y为字符变量 */ Z=X+Y; /*算术表达式中有字符变量时,自动将字符变量Y 转换为数值变量 */ run;
Slide 10
创建变量
使用赋值语句
Data a; x=1; run;/*数据集a中有个变量x,值为1,为数值型*/
使用INPUT语句
Data b; Input x $ y z; Datalines; Aaa 23 45 ; Run; /*创建三个变量,x为字符型,y、z为数值型*/
Slide 11
Slide 25
二 SAS函数的参数
参数类型 • 变量名 • 常数 • 函数
• 表达式 函数及其参数类型举例。
函数举例 Max(X,Y); X=Repeat(‘---‘, 20); Least=Min(sum(of x1-x10),y) ; 参数类型 变量名X,Y 常数 变量名和函数
SAS表达式及函数简介
Slide 1
SAS表达式
SAS表达式是由一系列算符和运算对象形成的一个指令集,它 被执行后产生一个目标值。 运算对象是SAS变量和SAS常数;算符是特殊的运算符、函数 和括号。
表达式分为简单表达式和复合表达式。 下列式子都是表达式。 X+1 3 LOG(X) LOG10(X) P/A*100 1-EXP(N/(N-1)) A=B=C STATE=‘CA’
data a; x=put(34.416,5.2); y=input("12345",5.2); run;
Slide 16
data; X=1; /*X为数值变量 */ Y=’10’; /*Y为字符变量 */ if X<Y then k=1; /*字符与数值变量进行比较时, 自动将字符变量Y转换为数值变量 */ run; data; Y=’10’; /*Y为字符变量 */ Z=log(Y); /*需要数值变量的函数中引用字符变量时, 自动将字符变量Y转换为数值变量 */ run;
Slide 14
数值转字符之后的格式:
data; Y=10; /*Y为数值变量 */ Z=’ROOM’||Y; /*自动将数值变量Y转换为字符变量 */ put Z=; Z=ROOM 10 run;
data ; Y=10600001; /*Y为数值变量 */ Z=SUBSTR(Y,7,6); /*自动将数值变量Y转换为字符变量 */ put Z=; run; Z=600001
注意,下面语句中 TOM不是字符常量,而是按变量处理!!
IF name=TOM THEN Score=85;
Slide 4
3. 日期、时间常量:
日期\时间常量是将日期\时间由(单)引号括起来, 后面加上d或t或dt而形成的。 例如: 日期常量:‘15may2008’ 时间常量:‘16:45:自动变量是由数据步语句自动创建的。这些自动变量 被加入到程序数据向量(PDV)中,但是并不输出到 数据集中。自动变量在重复过程中被保留,而不是被 设定为缺失。 如, _n_ _error_ first.byvar last.byvar _numeric_ _all_ 等
Date9.
MMDDYY10.
25JAN2004
16095
01/25/2004
Slide 8
日期和时间数据的存储
SAS采用数值存储日期和时间形式的数据。
在默认情况下,SAS系统以0代表1960年1月1日0时。 其它日期在SAS系统中被存储为与该日期相差的天数。
例如,1960年1月3日,在系统中存为2。
前缀算符用于变量、常数、函数或者用括号括起来的表达式 。例如: +Y -25 -COS(A) -(x1+x2-100)
前缀算符有:加号,减号,NOT和符号^。
中缀算符作用在算符两边的运算对象上,例如6<8 。 中缀算符一般分为四类:算术算符、比较算符、逻辑算符和 其它算符(最大、最小和连接)。
AGE<100
在DATA步中,为了对变量进行变换,建立新变量、条件处理、计 算新值及指定新值,都需要使用SAS表达式。
Slide 2
一、SAS常数 SAS常数用来表示固定的值,它或者是一个数字, 或者是用引号引起来的字符串、或者是其它特殊记号。 SAS使用的常数有五种类型:数值常量、字符常量、 日期、时间和日期时间常量、十六进制数值常量、十六 进制字符常量。我们主要介绍数值常量、字符常量和日 期常量。 1.数值常量: 一个数值常量就是出现在SAS语句里的数字。数值 常量可以包括小数点,负号和E记号。 例如:1 -5 1.23 1.2E23 0.1 0.5E-10。 用E表示法时,如2E4,它表示 2 10 4 ,或者20000。
Slide 20
(2)字符的比较 比较的对象可以是数值也可以是字符,但比较的结果总是数值 1(真)或0(假)。字符运算对象在字符之间从左到右被比较。字符次序 用机器排列次序确定(即按ASCII码排列序列)。 例如,表达式’GRAY’>’ADAMS’是真的,它与表达式 ‘ANDRE ,C’<’ANDRE,CLYDE’一样,它们的值都是1。
一 .SAS函数的定义
1.SAS函数的定义:
SAS函数是一个子程序,它由0个或几个自变量(参数) 返回一个结果值。 每个SAS函数都有一个函数名,及用括号括起来的参数, 这个函数对这些自变量执行某种运算。即使没有参数也需要 括号。
SAS函数的形式: FunctionName(arg1,arg2,arg3,...)
d
16:45:01’dt
t
或 DDMMMYYYY
日期时间常量:‘15may2008:
注意:日期格式为:DDMMMYY
即,月份需要用三个英文字母表示
Slide 5
二 SAS变量:
描述给定特征的数值集合的指标称为变量。 SAS变量的特征: 变量名、类型、存储长度、标签、输入格式、输出格式
存储长度指变量在存储时所需要的字节数。默认情况下所有的变量都定 义为8字节。字符变量的长度可为1-32768字节,数值变量的长度可为3-8 字节。 标签是对变量的补充说明,可以为任意字符,长度可多达256个字符。
Slide 19
1.算术算符:
算术算符表示执行一种算术运算,包括: ** 乘方 * 相乘 / 相除 + 相加 - 相减 如果算术算符有一个运算对象是缺失值,运算结果也是缺失值。
例如,y=x3
+.;
则y的值为缺失值(.)
2.比较算符:
比较算符确定两个量之间的一种关系,如果这种关系成立,则 输出结果为1(真);如果它不成立,则输出结果为0(假)。比较算符包 括: = (EQ) 等于 ^= (NE) 不等于 > (GT) 大于 < (LT) 小于 >= (GE) 大于等于 <= (LE) 小于等于 (1)算术表达式的比较 考虑表达式:A<=B。 如果A的值为4,B的值为3,则表达式A<=B的值为0(假);若A 的值为5,B的值为9,则表达式A<=B的值为1(真);若A与B的值均 为47,则表达式成立,且其值为1。
Slide 6
Variables
Observations Value
SAS数据集(部分)
Slide 7
输入输出格式
原始数据值 Format 格式化的 SAS (输入格式) 变量的值 (输出格式) SAS变量值 Informat
Dollar10.
Comma8.
$548,231
548231
548,231
Slide 12
函数INPUT将字符转换为数值
INPUT函数的形式: INPUT(数据源, 输入格式); 其中: 数据源为要转换为数值的变量,常数或表达式。数 据源既可以是数值型,也可以是字符型。 输入格式规定对数据源进行转换的输入格式。
data a; y=input("12345",5.2); run;
3.逻辑算符:
逻辑算符也称为布尔(Boolean)算符,在表达式里通常用来连接 一系列比较式。逻辑算符包括: &(AND) 与; | (OR) 或; ^ (NOT) 非 例如,age=25 AND sex=‘男’ 或 age=25 & sex=‘男’ age=25 OR sex=‘男’
4.运算次序:
2004年1月25日,在系统中存为16095。
注意:为了使数值型变量显示日期形式,必须使用日期型
的输出格式,同样地为了以日期形式输入日期必须使用 日期型的输入格式。
Slide 9
SAS变量分为两类,数值变量(Num)与字符变量(Char)。 数值型变量只能取数值为值。可以有正负号及小数点 (+、-、•),但不能有逗号(,)。 数值型是SAS的默认变量类型,默认长度为8位。 字符型变量可以取字符、字母、特殊字符以及数字为 值。 在DATA步中某些SAS语句中,第一次出现的变量名 后跟一个美元符号($),即表明该变量是字符型变量 ,如name$ 或name $。如果变量后不加$符号,SAS将 该变量认为数值型。 在SAS中一个字符变量的取值可以有1-32768个字 符长,默认长度为8个字符长;或由第一次赋值时字符 长度决定。
准则3:对于相同优先级的算符,左边的运算先做。但有两个例外: 1) 对第一级,右边的先做; 2**3**2 <-> 2**(3**2) 2) 当两个比较算符围着一个量时,则等价于一个and运算。例如: 12<age<20 <-> 12<age and age<20
Slide 22
SAS函数
Slide 23
SAS系统中,数值缺失值用小数点来(.)表示。
Slide 3
2.字符常量 字符常量是由(单)引号括起来的字符串.
例如,在下面的语句中: IF name=‘TOM’ THEN DO; ‘TOM’就是一个字符常量。 如果字符常量含有引号,则用两个连续的单引号来处 理。例如,字符值为TOM’S时,输入: name=’TOM’’S’ 缺失的字符常量值为空字符,表示为’’或””(两个连续的 单引号或双引号)。
Slide 13
数值自动转换为字符
data; X=’abcd’; /*X为字符变量 */ Y=123; /*Y为数值变量 */ X=Y; /*自动将数值变量Y转换为字符变量 */ run; 注意: 将数值变量赋给字符变量时,结果会受到字符变量长 度的影响!长度不足时,SAS尽量转换成能够满足长度限 制的结果,即科学记数法。
系统自动地将数值转换为字符时,使用BEST12.的输出格式,字 符值右对齐,不足12位时左侧以空格补齐。
Slide 15
函数PUT将数值转换为字符
PUT函数的形式: PUT(数据源, 输出格式);
其中: 数据源为要转换为字符值的变量,常数或表达 式。数据源既可以是数值型,也可以是字符型。 输出格式规定对数据源进行转换的输出格式。
例如:
MEAN(x,y,z,a) SUM(x,y,z) MIN(SUM(x,y,z),1000) TODAY()
Slide 24
2. SAS函数的分类: SAS函数分为20多种类型,常见的有: 算术函数、数组函数、截取函数、数学函 数、概率函数、分位数函数、非中心函数、 样本统计函数、随机函数、字符函数、日期 时间函数等。
例:使用自动变量_Numeric_。 data one; set sashelp.class; keep _numeric_; /* 只保留数据集中的数值变量*/ run;
Slide 18
三 SAS算符
SAS算符是一些符号,它们要求作比较、算术运 算或逻辑运算。 SAS使用两种主要类型的算符: 前缀算符和中缀算符
关于运算次序,SAS有如下的三个准则: 准则1:在括号里的表达式先计算; 准则2:较高优先级的运算先被执行。
Slide 21
下面是各运算符的优先等级(排在前面的优先):
1级 2级 3级 4级 5级 6级
**、^(not) *、 / +、 - 、 <、<=、=、 ^=、>、>=、 ^>、^< &(and) |(or)