sas常用函数
常用SAS函数简介
精选ppt
6
例2 正确与错误的表示方法
正确的表示方法
错误的表示方法
sum (x, y, z) sum (of x1-x10) sum (of x1-x10 d y1-y100)
sum (x y z) sum (x1-x10) sum (x1-x10 d y1-y100)
例3 数组元素自变量的缩写方法
精选ppt
17
练习1
计算以下数据表中日期值所在的年季月以及 处于某月的第几天、某周的第几天。
Date 1991-01-02 1991-01-03 1991-01-04 1991-01-05 1991-01-07 1991-01-08 1991-01-09 1991-01-10 1991-01-11 1991-01-12
常数
Least=Min(sum(of x1-x10),y); 表达式
精选ppt
4
2)参数个数: ➢ 有些函数不需要自变量,有些只需要一个自
变量,有些函数有多个自变量。 3)参数表示法: ➢ 当函数有多个参数时,必须用逗号分隔开。 4)参数名缩写方法: 函数名(OF 变量名1 … 变量名n )
精选ppt
Data; X=exp(0); Y=log(1); Put x y; Run;
Data; a=sin(0); b=sin(1.57); c=sin(3.14); proc print; format a 6.2 b 6.2 c 6.2; Run;
精选ppt
24
3. 数组函数
精选ppt
25
数组函数应用举例
22
练习2
ex2.1 计算0、1.57、 3.14对应的正弦函数值, 并将结果显示在输出窗口。
金融数据库——常用统计分布函数SAS实现
常用统计分布函数SAS 实现1. 正态分布密度函数作图分布函数作图产生随机数 其它作图(1)μ=2, σ=0.5, 1, 2。
三图重叠在一个坐标系内。
(2)μ=2, σ=0.5, 1, 2, 5, 10。
四图重叠在一个坐标系内。
(3)μ= 0,1,2 σ=1。
三图重叠在一个坐标系内。
(4)μ=0, σ=1用SAS 软件产生标准正态的概率分布表 其它概率计算注意)(2121)(22)(222σμπσπσμσμ-Φ===--∞---∞-⎰⎰x dt edt ex F t x t x于是,对任意的实数)(,2121x x x x <有,(1)μ=1.5,σ=2,产生正态概率分布表。
(2)μ=1.5,σ=2,求P(X>0)。
(3)μ=1.5,σ=2,求P(-1<X<2)。
(4)用SAS 计算下面概率,并与查表结果对比。
~(1,4)X N ,求( 1.6),(0 1.6),(||4)P X P X P X ≤<≤>分位数定义:设~(0,1)X N ,若Z α满足条件(),01P X Z ααα>=<<,则称Z α为标准正态分布的上α分位点。
(1)计算0.001,0.0025,0.005和0.010的下分位数。
(2) 计算0.001,0.0025,0.005和0.010的上分位数。
本人不同意分为上下分位数,分位数就是分位数,定义为:若Z α满足条件(),01P X Z ααα<=<<则称点Z α为随机变量的α分位数。
单边的, 双边的,注意和以均值为中心,1,2,3倍标准差宽度区间的概率值的区别。
其它可参考例子(1)概率的两种计算公式data ;p1=PROBNORM(1)-PROBNORM(-1); put p1=; p2= PROBNORM(2)-PROBNORM(-2); put p2=; p3= PROBNORM(3)-PROBNORM(-3); put p3=; run ;p1=0.6826894921 p2=0.9544997361 p3=0.9973002039data;p1=2*PROBNORM(1)-1; put p1=;p2=2*PROBNORM(2)-1; put p2=;p3=2*PROBNORM(3)-1; put p3=;run;p1=0.6826894921p2=0.9544997361p3=0.9973002039(2)以均值为中心的区间与概率如,以μ为中心,需要几倍标准差σ距离所构成的区间,其区间内的概率等上面(1)中的概率。
SAS 函数
CINV(p,df,nc)
其中:0=<p<=1, df>0, nc>=0
计算自由度为df,非中心参数为nc的卡方分布的
p分位数。
data;
x=cinv(0.95,2);
proc print;
run;
x=5.99
P=0.0521622862
分位数函数
1 正态分布分位数
Probit(p) 其中,0=<p<=1 计算标准正态分布的分位数,它是概率函数
probnorm的逆函数。 例:验证probit是probnorm的逆函数 data; P=probnorm(probit(0.025)); put P=; run;
使用SAS函数: least=min(sum(of x1-x10),y);
二、SAS函数自变量与结果
1 函数自变量
函数举例
自变量类型
Max(X,Y);
变量名
X=Repeat(‘—‘,20);
常数
Least=Min(sum(of x1-x10),y); 变量名和函数
Num=sum(if x1>0),(if x2>0)); 表达式
二、函数的用法
1。用于组合表达式和条件语句 data a; set ResDat.idx000001; where year(date)>1996; run;
2。用于处理多变量 不用SAS函数: totx=x1+x2+x3+x4+x5+x6+x7+x8+x9; if totx<y then least=totx; else least=y;
Probt(x,df,nc) 计算自由度为df,非中心参数为nc的t分布随机变量
SAS函数全量(齐全)
CAT Function Does not remove leading or trailing blanks, and returns a concatenated character string.
COMPARE Function Returns the position of the leftmost character by which two strings differ, or returns 0 if there is no difference.
COMPBL Function Removes multiple blanks from a character string.
COALESCEC Function Returns the first non-missing value from a list of character arguments.
COLLATE Function Returns a character string in ASCII or EBCDIC collating sequence.
ANYSPACE Function Searches a character string for a white-space character (blank, horizontal and vertical tab, carriage return, line feed, and form feed), and returns the first position at which that character is found.
SAS常用的随机数函数简介文档
SAS常用的随机数函数简介文档运用SAS进行Monte Carlo蒙特卡罗模拟(第五弹):SAS常用的随机数函数简介前一篇文章我们介绍了两种产生随机数序列的方法,即随机数函数产生随机数序列,其语法为:var = name(seed,)和CALL子程序产生随机数序列,其语法为:callname(seed,,var)。
本节我们将介绍SAS常用的随机数函数(其概率函数我们这里就不作详细介绍,感兴趣的话请查阅相关文献;SAS 随机数函数中的seed均为随机数种子):SAS随机数函数分布情况参数说明RANBIN(seed,n,p) 二项分布n:独立实验的次数,p:成功的概率RANCAU(seed) 柯西分布RANEXP(seed) 指数分布RANGAM(seed,a) 伽玛分布 a:a>0,形状参数RANNOR(seed) 正态分布NORMAL(seed) 正态分布RANPOI(seed,m) 泊松分布m:m>0,均值RANTBL(seed,p1,p2,...p n) 离散分布p(i):p(i) >0,且Σp(i)=1,概率RANTRI(seed,h) 三角分布h:0<=h<=1,斜边RANUNI(seed) 均匀分布UNIFORM(seed) 均匀分布这里要注意:Functions RANUNI and UNIFORM are identical. Function UNIFORM cannot be utilized as a CALL routine.文章中还举例说明了用上述基础的SAS随机数函数通过变换,可以产生很多有趣的分布,本人对此没有研究,请大家查看相关文献。
所有的SAS随机数函数都是通过RANUNI随机数函数变换得到的,例如我们通过就可以得到一个正态分布,通过e=-ln(u3)就可以得到指数分布。
通过下面的例子我们可以证明刚才的结论:程序一:DATA TEMP5(DROP=I);DO I=1 TO 12;RUNI=RANUNI(123);OUTPUT;END;RUN;PROC PRINT DATA=TEMP5;RUN;程序二:DATA TEMP6(DROP=I);DO I=1 TO 3;RUNI=RANUNI(123);RNOR=RANNOR(456);REXP=RANEXP(789);OUTPUT;END;RUN;PROC PRINT DATA=TEMP6;RUN;程序一结果:OBS RUNI1 0.750402 0.320913 0.178394 0.906035 0.357126 0.221117 0.786448 0.398089 0.1246710 0.1876911 0.7761812 0.43607程序二结果:OBS RUNI RNOR REXP1 0.75040 0.65572 0.098682 0.35712 0.39428 0.921103 0.12467 0.29958 0.82994从上面的结果我们可以看到,程序二的结果中,变量RUNI的三个值分别对应程序一结果里的程序二结果中的变量RUNI的第一、五、九个值。
sas 循环函数
sas 循环函数1. DO循环:SAS中最基本也是最常用的循环函数是DO循环。
它允许用户按照给定的次数重复执行一段代码。
DO循环的语法如下:```DO index_variable = start_value TO stop_value BY increment_value;/* 重复执行的代码 */END;```在这个循环中,index_variable是循环索引变量,start_value是索引的起始值,stop_value是索引的结束值,increment_value是每次循环迭代中索引的增量。
例如,下面的代码将打印1到10之间所有的奇数:```DATA test;DO i = 1 TO 10 BY 2;IF mod(i, 2) = 1 THENPUT i;END;RUN;2. DO WHILE循环:DO WHILE循环是一种基于条件的循环函数。
它在每次循环迭代之前检查一个条件,只有在条件满足时才继续执行。
DO WHILE循环的语法如下:```DO WHILE (condition);/* 循环执行的代码 */END;```在这个循环中,condition是一个逻辑表达式,只有在条件为TRUE时才会继续执行循环体中的代码。
例如,下面的代码将重复从1开始加1,直到总和超过100:```DATA test;total = 0;count = 0;DO WHILE (total < 100);count = count + 1;total = total + count;END;PUT count total;RUN;3. DO UNTIL循环:DO UNTIL循环与DO WHILE循环非常相似,只是在判断条件的时候相反。
即只有在条件为FALSE时才继续执行循环体中的代码。
DO UNTIL循环的语法如下:```DO UNTIL (condition);/* 循环执行的代码 */END;```在这个循环中,condition是一个逻辑表达式,只有在条件为FALSE时才会继续执行循环体中的代码。
常用SAS函数简介共51页
11、战争满足了,或曾经满足过人的 好斗的 本能, 但它同 时还满 足了人 对掠夺 ,破坏 以及残 酷的纪 律和专 制力的 欲望。 ——查·埃利奥 特 12、不应把纪律仅仅看成教育的手段 。纪律 是教育 过程的 结果, 首先是 学生集 体表现 在一切 生活领 域—— 生产、 日常生 活、学 校、文 化等领 域中努 力的结 果。— —马卡 连柯(名 言网)
13、遵守纪律的风气的培养,只有领 导者本 身在这 方面以 身作则 才能收 到成效 。—— 马卡连 柯 14、劳动者的组织性、纪律性、坚毅 精神以 及同全 世界劳 动者的 团结一 致,是 取得最 后胜利 的保证 。—— 列宁 摘自名言网
15、机会是不守纪律的。——雨果
66、节制使快乐增加并使享受加强 是耽误 了。——裴斯 泰洛齐 68、决定一个人的一生,以及整个命运 的,只 是一瞬 之间。 ——歌 德 69、懒人无法享受休息之乐。——拉布 克 70、浪费时间是一桩大罪过。——卢梭
2.SAS基础_表达式及函数简介
变量类型转换
字符自动转换为数值(无法转换为数值时,取缺失值)
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’
2.SAS基础_表达式及函数简介
3.逻辑算符:
逻辑算符也称为布尔(Boolean)算符,在表达式里通常用来连接 一系列比较式。逻辑算符包括: &(AND) 与; | (OR) 或; ^ (NOT) 非 例如,age=25 AND sex=‘男’ 或 age=25 & sex=‘男’ age=25 OR sex=‘男’
4.运算次序:
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’
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。
前缀算符用于变量、常数、函数或者用括号括起来的表达式 。例如: +Y -25 -COS(A) -(x1+x2-100)
SAS Function(函数)
SAS的函数对重要的函数加以介绍SAS提供了比一般程序设计语言多几倍的标准函数可以直接用在数据步的计算中,其中包括所有语言都有的数学函数、字符串函数,还包括特有的统计分布函数、分位数函数、随机数函数、日期时间函数、财政金融函数,等等。
这些函数的调用方法类似其它语言,比如求x1,x2,x3三个自变量的和可以用函数SUM(x1,x2,x3) 。
另外,SAS还提供了函数调用的另一种语法以便于把多个数据集变量作为函数自变量,其格式为“函数名(OF 变量名列表)”,其中变量名列表可以是任何合法的变量名列表,比如x1 ,x2,x3的和等价地可以用SUM(OF x1 x2 x3)或SUM(OF x1-x3)表示。
注意两种写法不能混在一起,比如SUM(OF x1,x2,x3)和SUM(x1-x3)都是错的。
本小节对重要的函数加以介绍,其它详见《SAS软件:Base SAS软件使用手册》(高惠璇等编译,中国统计出版社出版)。
一、数学函数ABS(x) 求x的绝对值。
MAX(x1,x2,…,xn) 求所有自变量中的最大一个。
MIN(x1,x2,…,xn) 求所有自变量中的最小一个。
MOD(x,y) 求x除以y的余数。
SQRT(x) 求x的平方根。
ROUND(x,eps) 求x按照eps指定的精度四舍五入后的结果,比如ROUND(5654.5654,0.01) 结果为5654.57,CEIL(x) 求大于等于x的最小整数。
当x为整数时就是x本身,否则为x右边最近的整数。
FLOOR(x) 求小于等于x的最大整数。
当x为整数时就是x本身,否则为x左边最近的整数。
INT(x) 求x扔掉小数部分后的结果。
FUZZ(x) 当x与其四舍五入整数值相差小于1E-12时取四舍五入。
LOG(x) 求x的自然对数。
LOG10(x) 求x的常用对数。
EXP(x) 指数函数。
SIN(x), COS(x), TAN(x) 求x的正弦、余弦、正切函数。
SAS中数据类型转换函数以及自动转换规则
SAS中数据类型转换函数以及自动转换规则在SAS中,数据类型转换函数和自动转换规则帮助我们在不同类型的数据之间进行转换和处理。
下面是关于SAS数据类型转换函数和自动转换规则的详细解释。
1.数据类型转换函数:SAS提供了多种数据类型转换函数,用于将一种数据类型转换为另一种数据类型。
以下是常用的SAS数据类型转换函数:- PUT函数:将数值型变量转换为字符型。
语法为:put(变量名, 格式)。
- INPUT函数:将字符型变量转换为数值型。
语法为:input(变量名, 格式)。
- CATT函数:将多个字符型变量连接成单个字符型变量。
语法为:catt(变量1, 变量2, ...)。
- CATS函数:将多个字符型变量连接成单个字符型变量,并自动去除连接结果中的空格。
语法为:cats(变量1, 变量2, ...)。
- MDY函数:将月、日和年转换为所需的日期格式。
语法为:mdy(月, 日, 年)。
- INTCK函数:计算两个日期之间的时间间隔。
语法为:intck(单位, 开始日期, 结束日期)。
2.自动转换规则:SAS也提供了一些自动转换规则,根据这些规则,SAS可以在需要的时候自动进行数据类型转换。
以下是SAS自动转换规则的一些示例:-将字符型变量与数值型变量进行计算时,SAS会自动将字符型变量转换为数值型变量。
-将数值型变量与字符型变量进行连接时,SAS会自动将数值型变量转换为字符型变量。
-当需要日期类型的数据时,SAS会自动将字符型变量按照日期格式转换为日期型变量。
-当需要字符型变量时,SAS会自动将日期型变量按照日期格式转换为字符型变量。
-当需要逻辑型数据时,SAS会将数值型变量按照一定规则转换为逻辑型数据。
需要注意的是,SAS的自动转换规则有时可能会导致数据的意外改变。
为了避免这种情况,可以使用数据类型转换函数来明确指定需要的数据类型。
总结:在SAS中,数据类型转换函数和自动转换规则是非常重要的。
SAS Function(函数)
SAS的函数对重要的函数加以介绍SAS提供了比一般程序设计语言多几倍的标准函数可以直接用在数据步的计算中,其中包括所有语言都有的数学函数、字符串函数,还包括特有的统计分布函数、分位数函数、随机数函数、日期时间函数、财政金融函数,等等。
这些函数的调用方法类似其它语言,比如求x1,x2,x3三个自变量的和可以用函数SUM(x1,x2,x3) 。
另外,SAS还提供了函数调用的另一种语法以便于把多个数据集变量作为函数自变量,其格式为“函数名(OF 变量名列表)”,其中变量名列表可以是任何合法的变量名列表,比如x1 ,x2,x3的和等价地可以用SUM(OF x1 x2 x3)或SUM(OF x1-x3)表示。
注意两种写法不能混在一起,比如SUM(OF x1,x2,x3)和SUM(x1-x3)都是错的。
本小节对重要的函数加以介绍,其它详见《SAS软件:Base SAS软件使用手册》(高惠璇等编译,中国统计出版社出版)。
一、数学函数ABS(x) 求x的绝对值。
MAX(x1,x2,…,xn) 求所有自变量中的最大一个。
MIN(x1,x2,…,xn) 求所有自变量中的最小一个。
MOD(x,y) 求x除以y的余数。
SQRT(x) 求x的平方根。
ROUND(x,eps) 求x按照eps指定的精度四舍五入后的结果,比如ROUND(5654.5654,0.01) 结果为5654.57,CEIL(x) 求大于等于x的最小整数。
当x为整数时就是x本身,否则为x右边最近的整数。
FLOOR(x) 求小于等于x的最大整数。
当x为整数时就是x本身,否则为x左边最近的整数。
INT(x) 求x扔掉小数部分后的结果。
FUZZ(x) 当x与其四舍五入整数值相差小于1E-12时取四舍五入。
LOG(x) 求x的自然对数。
LOG10(x) 求x的常用对数。
EXP(x) 指数函数。
SIN(x), COS(x), TAN(x) 求x的正弦、余弦、正切函数。
SAS学习笔记30SAS各种常用随机函数
SAS学习笔记30SAS各种常⽤随机函数
UNIFORM(seed)产⽣(0,1)区域均匀分布随机数,乘同余发⽣器
RANUNI(seed)产⽣(0,1)区域均匀分布随机数,素数模发⽣器
NORMAL(seed)产⽣标准正态分布随机数,利⽤中⼼极限定理近似公式RANNOR(seed)产⽣标准正态分布随机数,利⽤变换抽样法
RANEXP(seed)产⽣λ=1的指数分布随机数
RANGAM(seed, alpha)产⽣伽马分布随机数,alpha>0,seed为任意数值
RANTRI(seed, h)产⽣三⾓分布随机数,0<h<1,seed为任意数值
RANCAU(seed)产⽣标准柯西分布随机数
RANBIN(seed, n, p)产⽣⼆项分布随机数,n>0的整数,0<p<1,seed为任意数值RANPOI(seed, lambda)产⽣泊松分布随机数,lambda>0,seed为任意数值
RANTBL(seed, p1, …, …pn)产⽣离散分布随机数,0≤p i≤1,seed为任意数值。
SAS函数汇总
CALL PRXNEXT Routine
Returns the position and length of a substring that matches a pattern, and iterates over multiple matches within one string. Returns the start position and length for a capture buffer. Returns the position and length of a substring that matches a pattern. Performs a pattern-matching replacement. Searches for a pattern match and returns the position at which the pattern is found. Returns the last bracket match for which there is a match in a pattern. Compiles a Perl regular expression (PRX) that can be used for pattern matching of a character value. Returns a character string that contains the value for a capture buffer. Searches a character string for an alphanumeric character, and returns the first position at which the character is found. Searches a character string for an alphabetic character, and
SAS常用函数参考
SAS常⽤函数参考SAS常⽤函数参考这⼀节分类列出常⽤的函数,需要时可以参看帮助。
基本⼀、数据管理vector:向量 numeric:数值型向量 logical:逻辑型向量character;字符型向量 list:列表 data.frame:数据框c:连接为向量或列表 length:求长度 subset:求⼦集seq,from:to,sequence:等差序列rep:重复 NA:缺失值 NULL:空对象sort,order,unique,rev:排序unlist:展平列表attr,attributes:对象属性mode,typeof:对象存储模式与类型names:对象的名字属性⼆、字符串处理character:字符型向量 nchar:字符数 substr:取⼦串format,formatC:把对象⽤格式转换为字符串paste,strsplit:连接或拆分charmatch,pmatch:字符串匹配grep,sub,gsub:模式匹配与替换三、复数complex,Re,Im,Mod,Arg,Conj:复数函数四、因⼦factor:因⼦ codes:因⼦的编码 levels:因⼦的各⽔平的名字nlevels:因⼦的⽔平个数 cut:把数值型对象分区间转换为因⼦table:交叉频数表 split:按因⼦分组aggregate:计算各数据⼦集的概括统计量tapply:对“不规则”数组应⽤函数数学⼀、计算+, -, *, /, ^, %%, %/%:四则运算ceiling,floor,round,signif,trunc,zapsmall:舍⼊max,min,pmax,pmin:最⼤最⼩值range:最⼤值和最⼩值sum,prod:向量元素和,积cumsum,cumprod,cummax,cummin:累加、累乘sort:排序approx和approx fun:插值diff:差分sign:符号函数⼆、数学函数abs,sqrt:绝对值,平⽅根log, exp, log10, log2:对数与指数函数sin,cos,tan,asin,acos,atan,atan2:三⾓函数sinh,cosh,tanh,asinh,acosh,atanh:双曲函数beta,lbeta,gamma,lgamma,digamma,trigamma,tetragamma,pentagamma,choose ,lchoose:与贝塔函数、伽玛函数、组合数有关的特殊函数fft,mvfft,convolve:富利叶变换及卷积polyroot:多项式求根poly:正交多项式spline,splinefun:样条差值besselI,besselK,besselJ,besselY,gammaCody:Bessel函数deriv:简单表达式的符号微分或算法微分三、数组array:建⽴数组 matrix:⽣成矩阵data.matrix:把数据框转换为数值型矩阵lower.tri:矩阵的下三⾓部分 mat.or.vec:⽣成矩阵或向量t:矩阵转置 cbind:把列合并为矩阵 rbind:把⾏合并为矩阵diag:矩阵对⾓元素向量或⽣成对⾓矩阵aperm:数组转置 nrow, ncol:计算数组的⾏数和列数dim:对象的维向量 dimnames:对象的维名row/colnames:⾏名或列名 %*%:矩阵乘法crossprod:矩阵交叉乘积(内积) outer:数组外积kronecker:数组的Kronecker积 apply:对数组的某些维应⽤函数tapply:对“不规则”数组应⽤函数 sweep:计算数组的概括统计量aggregate:计算数据⼦集的概括统计量 scale:矩阵标准化matplot:对矩阵各列绘图 cor:相关阵或协差阵Contrast:对照矩阵 row:矩阵的⾏下标集col:求列下标集四、线性代数solve:解线性⽅程组或求逆 eigen:矩阵的特征值分解svd:矩阵的奇异值分解 backsolve:解上三⾓或下三⾓⽅程组chol:Choleski分解 qr:矩阵的QR分解chol2inv:由Choleski分解求逆五、逻辑运算<,>,<=,>=,==,!=:⽐较运算符!,&,&&,|,||,xor():逻辑运算符logical:⽣成逻辑向量 all,any:逻辑向量都为真或存在真ifelse():⼆者择⼀ match,%in%:查找unique:找出互不相同的元素 which:找到真值下标集合duplicated:找到重复元素六、优化及求根optimize,uniroot,polyroot:⼀维优化与求根程序设计⼀、控制结构if,else,ifelse,switch:分⽀for,while,repeat,break,next:循环apply,lapply,sapply,tapply,sweep:替代循环的函数。
【BaseFunctions】SAS常用字符串函数
【BaseFunctions】SAS常⽤字符串函数CAT(item-1 <, …, item-n>) : 在保留⾸尾空格的情况下连接字符串CATS(item-1 <, …, item-n>) : 在去除⾸尾空格的情况下连接字符串CATT(item-1 <, …, item-n>) : 在去除尾部空格的情况下连接字符串CATX(delimiter, item-1 <, ... item-n>): 去除⾸尾空格并插⼊分隔符,连接字符串CHAR(string, position): 返回字符串中指定位置的字符COMPBL(source): 去除字符串中的所有空格压缩为⼀个空格COMPRESS(source <, characters> <, modifier(s)>): 从字符串中去除指定字符COUNT(string, substring <, modifier(s)>): 计算某个⼦字符串在⼀个字符串中出现的次数IFC(logic-expression, value-returned-when-true, value-returmed-when-false <, value-returned-when-missing>): 根据逻辑表达式返回对应的字符串LEFT(argument): 将字符串左对齐LENGTH(string): 返回⾮空⽩字符串的长度,不包括尾部的空格,对于空⽩字符串,该函数返回1LENGTHC(string): 返回字符串的长度,包括尾部的空格LENGTHN(string): 返回字符串的长度,不包括尾部的空格,对于空⽩字符串,该函数返回0LOWCASE(argument): 将字符串中所有字母转换为⼩写MISSING(numeric-expression | character-expression): 判断变量是否包含缺失值,若是则返回1RIGHT(argument): 将字符串右对齐SCAN(string, count <, character-list <, modifier>>): 返回字符串中被指定字符分隔后的第n个字符串STRIP(string): 去除字符串中⾸尾所有空格SUBSTR(variable, positiong <, length>) = character-to-replace: 将字符串中的某个⼦字符串替换成其他字符串variable = SUBSTR(string, position <, length>): 提取字符串中指定位置和长度的⼦字符串TRANSTRN(source, target, replacement):将字符串中某个指定⼦字符串替换为另⼀个⼦字符串TRIM(argument): 去除字符串尾部的空格,如果该字符串为缺失值,则返回⼀个空格UPCASE(argument): 将字符串中所有字符转换为⼤写。
SAS学习系列06. 使用SAS函数
06. 使用SAS函数(一)创建并定义新变量可以在数据步中,利用赋值语句创建或重新定义新变量(列),语法:变量名=表达式;注:(1)表达式可以是数值或字符常量、数学表达式、函数等;(2)加减乘除幂:+ - * / **,也可以使用括号。
例1下面数据(C:\MyRawData\Garden.dat)是番茄、南瓜、豌豆、葡萄的重量:代码:data homegarden;infile'c:\MyRawData\Garden.dat';input Name $ 1-7 Tomato Zucchini Peas Grapes;Zone = 14;Type = 'home';Zucchini = Zucchini * 10;Total = Tomato + Zucchini + Peas + Grapes;PerTom = (Tomato / Total) * 100;run;proc print data = homegarden;title'Home Gardening Survey';run;运行结果:程序说明:(1)5-8行使用了5个赋值语句,第6行改写旧变量,运行结果将输出所有变量;(2)若观测值中有缺省值,相应的新变量也出现缺省值。
(二)使用SAS函数一、SAS函数概述SAS自带数百个函数,主要包括以下函数类:字符/字符串函数日期/时间函数距离/州/邮编代码函数数学函数概率/描述统计/随机数函数金融函数宏函数变量信息函数函数基本调用形式(可以嵌套调用):函数名(参数1,参数2,…);例2南瓜雕刻比赛的数据(C:\MyRawData\pumpkin.dat)包含了参赛者的名字、年龄、雕刻的南瓜类型、报名日期、五位裁判给出的分数:代码:data contest;infile'c:\MyRawData\Pumpkin.dat';input Name $16. Age 3. +1 Type $1. +1 Date MMDDYY10.(Scr1 Scr2 Scr3 Scr4 Scr5) (4.1);AvgScore = mean(Scr1, Scr2, Scr3, Scr4, Scr5);DayEntered = day(Date);Type = upcase(Type); /* 转化为大写 */run;proc print data = contest;title'Pumpkin Carving Contest';run;运行结果:程序说明:(1)均值函数mean( )返回非缺省值参数的平均值;(2)d ay( )函数返回日期值距离1961年1月1日的天数。
SAS函数大全
SAS函数大全SAS FUNCTIONSExcerpted from SAS release 8.2 Online DocumentationJuly, 2004Arithmetic FunctionsABS(argument)returns absolute valueDIM(array-name)returns the number of elements in a one-dimensional array or the numberof elements in a specified dimension of a multidimensional array.n specifies the dimension, in a multidimensional array, forwhich you want to know the the number of elements.DIM(array-name,bound-n)returns the number of elements in a one-dimensional array or the numberof elements in the specified dimension of a multidimensional arraybound-n specifies the dimension in a multidimensional array, for which you want to know the number of elements. HBOUND(array-name)returns the upper bound of an array HBOUND(array-name,bound-n)returns the upper bound of an arrayLBOUND(array-name)returns the lower bound of an arrayLBOUND(array-name,bound-n)returns the lower bound of an arrayMAX(argument,argument, ...)returns the largest value of the numeric argumentsMIN(argument,argument, ...)returns the smallest value of the numeric argumentsMOD(argument-1, argument-2)returns the remainderSIGN(argument)returns the sign of a value or 0SQRT(argument)returns the square rootCharacter FunctionsBYTE(n)returns one character in the ASCII or EBCDICcollating sequence where n is an integer representinga specific ASCII or EBCDIC characterCOLLATE(start-position<,end-position>) | (start-position<,,length>)returns an ASCII or EBCDIC collating sequence character stringCOMPBL(source)removes multiple blanks between words in acharacter stringCOMPRESS(source<,characters-to-remove>)removes specific characters from a character string DEQUOTE(argument)removes quotation marks from a character value INDEX(source,excerpt)searches the source for the character string specifiedby the excerptINDEXC(source,excerpt-1<, ... excerpt-n>)searches the source for any character present in theexcerptINDEXW(source,excerpt)searches the source for a specified pattern as a word LEFT(argument)left-aligns a SAS character stringLENGTH(argument)returns the length of an argumentLOWCASE(argument)converts all letters in an argument to lowercase QUOTE(argument)adds double quotation marks to a character value RANK(x)returns the position of a character in the ASCII orEBCDIC collating sequenceREPEAT(argument,n)repeats a character expressionREVERSE(argument)reverses a character expressionRIGHT(argument)right-aligns a character expressionSCA N(argument,n<,delimiters>)returns a given word from a character expression SOUNDEX(argument)encodes a string to facilitate searchingreplaces character value contentsSUBSTR(argument,position<,n>)=characters-to-replacevar=SUBSTR(argument,position<,n>)extracts a substring from an argument. (var is anyvalid SAS variable name.)TRANSLATE(source,to-1,from-1<,...to-n,from-n>)replaces specific characters in a characterexpressionTRANW RD(source,target,replacement)replaces or removes all occurrences of a word in acharacter stringTRIM(argument)removes trailing blanks from character expressionand returns one blank if the expression is missing TRIMN(argument)removes trailing blanks from character expressionsand returns a null string if the expression is missingUPCASE(argument)converts all letters in an argument to uppercase VERIFY(source,excerpt-1<,...excerpt-n)returns the position of the first character unique toan expressionDate and Time FunctionsDATDIF(sdate,edate,basis)returns the number of days between two datesDATE()returns the current date as a SAS date valueDATEJUL(julian-date)converts a Julian date to a SAS date valueDATEPA RT(datetime)extracts the date from a SAS datetime value DATETIME()returns the current date and time of day DA Y(date)returns the day of the month from a SAS date value DHMS(date,hour,minute,second)returns a SAS datetime value from date, hour, minute, andsecondHMS(hour,minute,second)returns a SAS time value from hour, minute, and second HOUR()returns the hour from a SAS time or datetime value INTCK('interval',from,to)returns the number of time intervals in a given time spanINTNX('interval',start-from,increment<,'alignment'>)advances a date, time, or datetime value by a given interval, and returns a date, time, or datetime valueJULDATE(date)returns the Julian date from a SAS date value MDY(month,day,year)returns a SAS date value from month, day, and year values MINUTE(time | datetime)returns the minute from a SAS time or datetime value MONTH(date)returns the month from a SAS date valueQTR(date)returns the quarter of the year from a SAS datevalue SECOND(time | datetime)returns the second from a SAS time or datetime value TIME()returns the current time of day TIMEPA RT(datetime)extracts a time value from a SAS datetime valueTODA Y()returns the current date as a SAS date valueWEEKDA Y(date)returns the day of the week from a SAS date valueYEA R(date)returns the year from a SAS date valueYRDIF(sdate,edate,basis)returns the difference in years between two datesYYQ(year,quarter)returns a SAS date value from the year and quarterMathematical FunctionsAIRY(x)returns the value of the AIRY functionDAIRY(x)returns the derivative of the AIRY functionDIGAMMA(argument)returns the value of the DIGAMMA functionERF(argument)returns the value of the (normal) error functionERFC(argument)returns the value of the (normal) error functionEXP(argument)returns the value of the exponential function GAMMA(argument)returns the value of the GAMMA functionIBESSEL(nu,x,kode)returns the value of the modified bessel functionJBESSEL(nu,x)returns the value of the bessel functionLGAMMA(argument)returns the natural logarithm of the GAMMA functionLOG(argument)returns the natural (base e) logarithmLOG2(argument)returns the logarithm to the base 2LOG10(argument)returns the logarithm to the base 10TRIGAMMA(argument)returns the value of the TRIGAMMA functionNoncentrality FunctionsCNONCT(x,df,prob)returns the noncentrality parameter from a chi-squared distributionFNONCT(x,ndf,ddf,prob)returns the value of the noncentrality parameter of an F distributionTNONCT(x,df,prob)returns the value of the noncentrality parameter from the student's t distribution Probability and Density FunctionsCDF('dist',quantile,parm-1,...,parm-k)computes cumulative distribution functionsLOGPDF|LOGPMF('dist',quantile,parm-1,...,parm-k)computes the logarithm of a probability density (mass) function. The two functions are identical.LOGSDF('dist',quantile,parm-1,...,parm-k) computes the logarithm of a survival functionPDF|PMF('dist',quantile,parm-1,...,parm-k)computes probability density (mass) functions POISSON(m,n)returns the probability from a POISSON distribution PROBBETA(x,a,b)returns the probability from a beta distribution PROBBNML(p,n,m)returns the probability from a binomial distribution PROBCHI(x,df<,nc>)returns the probability from a chi-squared distribution PROBF(x,ndf,ddf<,nc>)returns the probability from an F distribution PROBGAM(x,a)returns the probability from a gamma distribution PROBHYPR(N,K,n,x<,r>)returns the probability from a hypergeometric distribution PROBMC probabilities and criticalvalues (quantiles) from variousdistributions for multiple comparisons of the means ofseveral groups.PROBNEGB(p,n,m)returns the probability from a negative binomialdistributionPROBBNRM(x,y,r)standardized bivariate normal distribution PROBNORM(x)returns the probability from the standard normal distributionPROBT(x,df<,nc>)returns the probability from a Student's t distribution SDF('dist',quantile,parm-1,...,parm-k) computes a survival functionQuantile FunctionsBETAINV(p,a,b)returns a quantile from the beta distribution CINV(p,df<,nc>)returns a quantile from the chi-squared distributionFINV(p,ndf,ddf<,nc>)returns a quantile from the F distributionGAMINV(p,a)returns a quantile from the gamma distribution PROBIT(p)returns a quantile from the standard normal distributionTINV(p,df<,nc>)returns a quantile from the t distributionSample Statistics FunctionsCSS(argument,argument,...)returns the corrected sum of squares CV(argument,argument,...)returns the coefficient of variation KURTOSIS(argument,argument,...)returns the kurtosis (or 4th moment) MAX(argument,argument, ...)returns the largest valueMIN(argument,argument, ...)returns the smallest valueMEAN(argument,argument, ...)returns the arithmetic mean(average)MISSING(numeric-expression | character-expression)returns a numeric result that indicates whether the argument contains a missing valueN(argument,argument, ....)returns the number of nonmissing values NMISS(argument,argument, ...)returns the number of missing values ORDINA L(count,argument,argument,...)returns the largest value of a part of a list RANGE(argument,argument,...)returns the range of values SKEWNESS(argument,argument,argument,...)returns the skewnessSTD(argument,argument,...)returns the standard deviation STDERR(argument,argument,...)returns the standard error of the mean SUM(argument,argument,...)returns the sumUSS(argument,argument,...)returns the uncorrected sum of squares VA R(argument,argument,...)returns the variance State and ZIP Code FunctionsFIPNAME(expression)converts FIPS codes to uppercase state namesFIPNAMEL(expression)converts FIPS codes to mixed case state namesFIPSTATE(expression)converts FIPS codes to two-character postal codesSTFIPS(postal-code)converts state postal codes to FIPS state codesSTNAME(postal-code)converts state postal codes to uppercase state namesTip:For Version 6, the maximum length of the value that isreturned is 200 characters. For Version 7 and beyond, themaximum length is 20 characters.STNAMEL(postal-code)converts state postal codes to mixed case state namesTip:For Version 6, the maximum length of the value that isreturned is 200 characters. For Version 7 and beyond, themaximum length is 20 characters.ZIPFIPS(zip-code)converts ZIP codes to FIPS state codesZIPNAME(zip-code)converts ZIP codes to uppercase state namesZIPNAMEL(zip-code)converts ZIP codes to mixed case state namesZIPSTATE(zip-code)converts ZIP codes to state postal codes Trigonometric and Hyperbolic Functions ARCOS(argument)returns the arccosineARSIN(argument)returns the arcsineATAN(argument)returns the arctangentCOS(argument)returns the cosineCOSH(argument)returns the hyperbolic cosineSIN(argument)returns the sineSINH(argument)returns the hyperbolic sineTAN(argument)returns the tangentTANH(argument)returns the hyperbolic tangentTruncation FunctionsCEIL(argument)returns the smallest integer that is greater than or equal to theargumentFLOOR(argument)returns the largest integer that is less than or equal to the argument FUZZ(argument)returns the nearest integer if the argument is within 1E-12INT(argument)returns the integer valueROUND(argument,round-off-unit)rounds to the nearestround-off unitTRUNC(number, length)truncates a numeric value to a specified lengthVariable Information FunctionsGETVA RC(data-set-id,var-num)returns the value of a SAS data set character variableGETVA RN(data-set-id,var-num)returns the value of a SAS data set numeric variableVA RFMT(data-set-id,var-num)returns the format assigned to a SAS data set variableVA RINFMT(data-set-id,var-returns the informat assigned to a SAS data set variablenum)returns the label assigned to a SAS data set variableVA RLA BEL(data-set-id,var-num)VA RLEN(data-set-id,var-num)returns the length of a SAS data set variablereturns the name of a SAS data set variableVA RNAME(data-set-id,var-num)VA RNUM(data-set-id,var-name)returns the number of a SAS data set variable's position in a SAS datasetVA RRA Y(name)returns a value that indicates whether the specified name is an array VA RRA YX(expression)returns a value that indicates whether the value of the specifiedargument is an arrayVA RTYPE(data-set-id,var-num)returns the data type of a SAS data set variableVFORMAT(var)returns the format associated with the given variableVFORMATD(var)returns the format decimal value associated with the given variable VFORMATDX(expression)returns the format decimal value associated with the value of the specified argumentVFORMATN(var)returns the format name associated with the given variable VFORMATNX(expression)returns the format name associated with the value of the specifiedargumentVFORMATW(var)returns the format width associated with the given variable VFORMATWX(expression)returns the format width associated with the value of the specifiedargumentVFORMATX(expression)returns the format associated with the value of the specified argument VINARRA Y(var)returns a value that indicates whether the given variable is a member of an arrayVINARRA YX(expression)returns a value that indicates whether the value of the specifiedargument is a member of an arrayVINFORMAT(var)returns the informat associated with the given variable VINFORMATD(var)returns the informat decimal value associated with the given variable VINFORMATDX(expression)returns the informat decimal value associated with the value of thespecified argumentVINFORMATN(var)returns the informat name associated with the given variableVINFORMATNX(expression)returns the informat nameassociated with the value of the specifiedargumentVINFORMATW(var)returns the informat width associated with the given variable VINFORMATWX(expression)returns the informat width associated with the value of the specified argumentVINFORMATX(expression)returns the informat associated with the value of the specified argument VLA BEL(var)returns the label associated with the given variableVLA BELX(expression)returns the variable label for the value of a specified argument VLENGTH(var)returns the compile-time (allocated) size of the given variable VLENGTHX(expression)returns the compile-time (allocated) size for the value of the specifiedargumentVNAME(var)returns the name of the given variableVNAMEX(expression)validates the value of the specified argument as a variable name VTYPE(var)returns the type (character or numeric) of the given variableVTYPEX(expression)returns the type (character or numeric) for the value of the specifiedargument。
sas常用函数和自动变量
SAS语言概述SAS提供了一种完善的编程语言。
类似于计算机的高级语言,SAS用户只需要熟悉其命令、语句及简单的语法规则就可以做数据管理和分析处理工作。
因此,掌握SAS编程技术是学习SAS的关键环节。
在SAS中,把大部分常用的复杂数据计算的算法作为标准过程调用,用户仅需要指出过程名及其必要的参数。
这一特点使得SAS编程十分简单。
一、SAS程序SAS程序是SAS语句的有序集合。
SAS程序可分为两部分:1.数据步(DATAStep)2.过程步(PROCStep)在一份SAS程序中,通常有一个数据步和一个过程步.有时可能有多个数据步和多个过程步。
数据步是为过程步准备数据的且将准备好的数据放在数据集中,过程步是把指定数据集中的数据计算处理并输出结果。
二、SAS语句SAS语句是以SAS关键词开头、后跟SAS名、特殊字符或操作符组成,并且以分号结尾。
一个SAS语句规定了一种操作或为系统提供某些信息。
1.SAS关键字关键字是系统已赋于确定意义的一个单词。
在SAS语言里,除了赋值、求和、注释等语句外,多数语句是以其关键字作为开头的。
如DATA、FORMA,PROC、INFILE等都是相应语句的关键字。
2.SAS名在SAS语句中,可能出现的SAS名有变量名,数据集名,输出格式名,过程名,选择项名,数组名和语句标号名。
还有SAS对文件的一种特殊称呼叫逻辑库名和文件逻辑名。
SAS名是字母或下划线开头后跟宇母或数宇或下划线的字符串,字符个数不多于八个。
空格和特殊宇符(如$,@,#等)不许在SAS名中出现。
另外,SAS保留了一些特殊的变量名并赋于特定的意义,这些变量都是以下划线开头和结尾,如N_表示数据步已执行过的次数。
三、语句描述记号(1)关键字用英文书写,在写程序时,这些词必须严格以给出的拼写形式书写。
SAS常用函数汇总
SAS常用函数汇总SAS 常用函数汇总一、数学函数ABS(x) 求x的绝对值。
MAX(x1,x2,…,xn) 求所有自变量中的最大一个。
MIN(x1,x2,…,xn) 求所有自变量中的最小一个。
MOD(x,y) 求x除以y的余数。
SQRT(x) 求x的平方根。
ROUND(x,eps) 求x按照eps指定的精度四舍五入后的结果,比如ROUND(5654.5654,0.01) 结果为5654.57,ROUND(5654.5654,10)结果为5650。
CEIL(x) 求大于等于x的最小整数。
当x为整数时就是x本身,否则为x右边最近的整数。
FLOOR(x) 求小于等于x的最大整数。
当x为整数时就是x本身,否则为x左边最近的整数。
INT(x) 求x扔掉小数部分后的结果。
FUZZ(x) 当x与其四舍五入整数值相差小于1E-12时取四舍五入。
LOG(x) 求x的自然对数。
LOG10(x) 求x的常用对数。
EXP(x) 指数函数。
SIN(x), COS(x), TAN(x) 求x的正弦、余弦、正切函数。
ARSIN(y) 计算函数y=sin(x)在区间的反函数,y取[-1,1]间值。
ARCOS(y) 计算函数y=cos(x)在的反函数,y取[-1,1]间值。
ATAN(y) 计算函数y=tan(x)在的反函数,y取间值。
SINH(x), COSH(x), TANH(x) 双曲正弦、余弦、正切ERF(x) 误差函数GAMMA(x) 完全函数此外还有符号函数SIGN,函数一阶导数函数DIGAMMA,二阶导数函数TRIGAMMA ,误差函数余函数ERFC,函数自然对数LGAMMA,ORDINAL函数,AIRY 函数,DAIRY函数,Bessel函数JBESSEL,修正的Bessel函数IBESSEL,等等。
二、数组函数数组函数计算数组的维数、上下界,有利于写出可移植的程序。
数组函数包括:DIM(x) 求数组x第一维的元素的个数(注意当下界为1时元素个数与上界相同,否则元素个数不一定与上界相同)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Sas常用函数(转)一、数学函数ABS(x) 求x的绝对值。
MAX(x1,x2,…,xn) 求所有自变量中的最大一个。
MIN(x1,x2,…,xn) 求所有自变量中的最小一个。
MOD(x,y) 求x除以y的余数。
SQRT(x) 求x的平方根。
ROUND(x,eps) 求x按照eps指定的精度四舍五入后的结果,比如ROUND(5654.5654,0.01) 结果为5654.57,ROUND(5654.5654,10)结果为5650。
CEIL(x) 求大于等于x的最小整数。
当x为整数时就是x本身,否则为x右边最近的整数。
FLOOR(x) 求小于等于x的最大整数。
当x为整数时就是x本身,否则为x左边最近的整数。
INT(x) 求x扔掉小数部分后的结果。
FUZZ(x) 当x与其四舍五入整数值相差小于1E-12时取四舍五入。
LOG(x) 求x的自然对数。
LOG10(x) 求x的常用对数。
EXP(x) 指数函数。
SIN(x), COS(x), TAN(x) 求x的正弦、余弦、正切函数。
ARSIN(y) 计算函数y=sin(x)在区间的反函数,y取[-1,1]间值。
ARCOS(y) 计算函数y=cos(x)在的反函数,y取[-1,1]间值。
ATAN(y) 计算函数y=tan(x)在的反函数,y取间值。
SINH(x), COSH(x), TANH(x) 双曲正弦、余弦、正切ERF(x) 误差函数GAMMA(x) 完全函数此外还有符号函数SIGN,函数一阶导数函数DIGAMMA,二阶导数函数TRIGAMMA ,误差函数余函数ERFC,函数自然对数LGAMMA,ORDINAL函数,AIRY 函数,DAIRY函数,Bessel 函数JBESSEL,修正的Bessel函数IBESSEL,等等。
二、数组函数数组函数计算数组的维数、上下界,有利于写出可移植的程序。
数组函数包括:DIM(x) 求数组x第一维的元素的个数(注意当下界为1时元素个数与上界相同,否则元素个数不一定与上界相同)。
DIM k(x) 求数组x第k维的元素的个数。
LBOUND(x) 求数组x第一维的下界。
HBOUND(x) 求数组x第一维的上界。
LBOUND k(x) 求数组x第k维的下界。
HBOUND k(x) 求数组x第k维的上界。
三、字符函数较重要的字符函数有:TRIM(s) 返回去掉字符串s的尾随空格的结果。
UPCASE(s) 把字符串s中所有小写字母转换为大写字母后的结果。
LOWCASE(s) 把字符串s中所有大写字母转换为小写字母后的结果。
INDEX(s,s1) 查找s1在s中出现的位置。
找不到时返回0。
RANK(s) 字符s的ASCII码值。
BYTE(n) 第n个ASCII码值的对应字符。
REPEAT(s,n) 字符表达式s重复n次。
SUBSTR(s,p,n) 从字符串s中的第p个字符开始抽取n个字符长的子串TRANWRD(s,s1,s2) 从字符串s中把所有字符串s1替换成字符串s2后的结果。
其它字符函数还有COLLATE,COMPRESS,INDEXC,LEFT,LENGTH,REVERSE,RIGHT,SCAN ,TRANSLATE,VERIFY,COMPBL,DEQUOTE,INDEXW,QUOTE,SOUNDEX,TRIMN,INDEXW。
四、日期和时间函数常用日期和时间函数有:MDY(m,d,yr) 生成yr年m月d日的SAS日期值Statements Resultsmn=8; dy=27; yr=12;birthday= mdy(mn,dy,yr);put birthday; 08/27/2012mn=7; dy=11; yr=12;anniversary= mdy(mn,dy,yr);put anniversary; 11JUL2012YEAR(date) 由SAS日期值date得到年MONTH(date) 由SAS日期值date得到月DAY(date) 由SAS日期值date得到日WEEKDAY(date) 由SAS日期值date得到星期几QTR(date) 由SAS日期值date得到季度值HMS(h,m,s) 由小时h、分钟m、秒s生成SAS时间值DHMS(d,h,m,s) 由SAS日期值d、小时h、分钟m、秒s生成SAS日期时间值DATEPART(dt) 求SAS日期时间值dt的日期部分INTNX(interval,from,n) 计算从from开始经过n个in间隔后的SAS日期。
其中interval 可以取'YEAR'、'QTR'、'MONTH'、'WEEK'、'DAY'等。
比如,INTNX('MONTH', '16Dec1997'd, 3)结果为1998年3月1日。
注意它总是返回一个周期的开始值。
INTCK(interval,from,to) 计算从日期from到日期to中间经过的interval间隔的个数,其中interval 取'MONTH'等。
比如,INTCK('YEAR', '31Dec1996'd, '1Jan1998'd)计算1996年12 月31日到1998年1月1日经过的年间隔的个数,结果得2,尽管这两个日期之间实际只隔1年。
其它日期和时间函数还有DATE、TODAY、DATETIME、DATEJUL、JULDATE、HOUR、MINUTE、SECOND 、TIME、TIMEPART等。
详见《SAS系统-Base SAS软件使用手册》、《SAS系统-SAS/ETS软件使用手册》。
五、分布密度函数、分布函数作为一个统计计算语言,SAS提供了多种概率分布的有关函数。
分布密度、概率、累积分布函数等可以通过几种统一的格式调用,格式为分布函数值= CDF(' 分布', x <, 参数表>);密度值= PDF(' 分布', x <, 参数表>);概率值= PMF(' 分布', x <, 参数表>);对数密度值= LOGPDF(' 分布', x <, 参数表>);对数概率值= LOGPMF(' 分布', x <, 参数表>);CDF计算由'分布'指定的分布的分布函数,PDF计算分布密度函数值,PMF计算离散分布的分布概率,LOGPDF为PDF的自然对数,LOGPMF为PMF的自然对数。
函数在自变量x处计算,<, 参数表>表示可选的参数表。
分布类型取值可以为: BERNOULLI, BETA, BINOMIAL, CAUCHY, CHISQUARED, EXPONENTIAL, F, GAMMA, GEOMETRIC, HYPERGEOMETRIC, LAPLACE, LOGISTIC, LOGNORMAL, NEGBINOMIAL, NORMAL 或GAUSSIAN, PARETO, POISSON, T, UNIFORM, WALD 或IGAUSS, and WEIBULL。
可以只写前四个字母。
例如,PDF('NORMAL', 1.96)计算标准正态分布在1.96处的密度值(0.05844),CDF('NORMAL', 1.96)计算标准正态分布在1.96处的分布函数值(0.975)。
PMF对连续型分布即PDF。
除了用上述统一的格式调用外,SAS还单独提供了常用的分布的密度、分布函数。
PROBNORM(x) 标准正态分布函数PROBT(x,df<,nc>) 自由度为df的t分布函数。
可选参数nc为非中心参数。
PROBCHI(x,df<,nc>) 自由度为df的卡方分布函数。
可选参数nc为非中心参数。
PROBF(x,ndf,ddf<,nc>) F(ndf,ddf)分布的分布函数。
可选参数nc为非中心参数。
PROBBNML(p,n,m) 设随机变量Y服从二项分布B(n,p),此函数计算P(Y m)。
POISSON((lambda,n) 参数为lambda的Poisson分布Y n的概率。
PROBNEGB(p,n,m) 参数为(n,p)的负二项分布Y m的概率。
PROBHYPR(N,K,n,x<,r>) 超几何分布的分布函数。
设N个产品中有K个不合格品,抽取n个样品,其中不合格品数小于等于x的概率为此函数值。
可选参数r是不匀率,缺省为1 ,r代表抽到不合格品的概率是抽到合格品概率的多少倍。
PROBBETA(x,a,b) 参数为(a,b)的Beta分布的分布函数。
PROBGAM(x,a) 参数为a的Gamma分布的分布函数。
PROBMC 计算多组均值的多重比较检验的概率值和临界值。
PROBBNRM(x,y,r) 标准二元正态分布的分布函数,r为相关系数。
六、分位数函数分位数函数是概率分布函数的反函数。
其自变量在0到1之间取值。
分位数函数计算的是分布的左侧分位数。
SAS提供了六种常见连续型分布的分位数函数。
PROBIT(p) 标准正态分布左侧p分位数。
结果在-5到5之间。
TINV(p, df <,nc>) 自由度为df的t分布的左侧p分位数。
可选参数nc为非中心参数。
CINV(p,df<,nc>) 自由度为df的卡方分布的左侧p分位数。
可选参数nc为非中心参数。
FINV(p,ndf,ddf<,nc>) F(ndf,ddf)分布的左侧p分位数。
可选参数nc为非中心参数。
GAMINV(p,a) 参数为a的伽马分布的左侧p分位数。
BETAINV(p,a,b) 参数为(a,b)的贝塔分布的左侧p分位数。
七、随机数函数SAS可以用来进行随机模拟。
它提供了常见分布的伪随机数生成函数。
1.均匀分布随机数有两个均匀分布随机数函数:UNIFORM(seed),seed必须是常数,为0,或5位、6位、7位的奇数。
RANUNI(seed),seed为小于2**31-1的任意常数。
在同一个数据步中对同一个随机数函数的多次调用将得到不同的结果,但不同数据步中从同一种子出发将得到相同的随机数序列。
随机数种子如果取0或者负数则种子采用系统日期时间。
2.正态分布随机数有两种,NORMAL(seed),seed为0,或5位、6位、7位的奇数。
RANNOR(seed),seed为任意数值常数。
3.指数分布随机数RANEXP(seed),seed为任意数值,产生参数为1的指数分布的随机数。