常用函数简介课件.ppt
关于常用函数简介现在学习的是第1页,共49页SAS函数 SAS系统提供的SAS函数比一般高级语言的标准函数多得多,尤其是概率函数、分位数函数、样本统计函数、随机数函数。如此丰富的SAS函数,对用户统计分析计算以及编写SAS程序带来极大的方便。现在学习的是第2页,共49页SAS函数定义 SAS函数是一个子程序,对0个或几个参数(自变量)返回一个结果值。SAS函数的形式:函数名(函数名(参数1,参数2,)例如:MEAN(x,y,z,a)MIN(SUM(x,y,z),1000)现在学习的是第3页,共49页SAS函数中的参数1)参数类型:变量名;常数;函数;表达式。例1 函数及其参数类型举例。现在学习的是第4页,共49页2)参数个数:有些函数不需要自变量,有些只需要一个自变量,有些函数有多个自变量。3)参数表示法:当函数有多个参数时,必须用逗号分隔开。4)参数名缩写方法:函数名(OF 变量名1 变量名n)现在学习的是第5页,共49页参数的表示法举例以逗号(,)分隔参数,如 sum(x1,x2,x3,x4,x5,x6,x7,x8)去掉逗号(,),最前面加上“of”,如 sum(of x1 x2 x3 x4 x5 x6 x7 x8)去掉逗号(,),最前面加上“of”,变量简写:sum(of x1 -x8)现在学习的是第6页,共49页例2 正确与错误的表示方法例3 数组元素自变量的缩写方法array y10 y1-y10;/*定义数组y10*/x=sum(of y*);z=sum(of y1-y10);例中,两个SUM函数的表示法是等价的。现在学习的是第7页,共49页函数结果通常函数的结果由其自变量的属性决定:自变量是字符时结果变量为字符;自变量是数值时结果变量为数值。PUT函数是一个例外,它不管自变量是什么类型,其结果总是字符值。现在学习的是第8页,共49页用PUT语句在LOG窗口显示函数值例4 显示概率值和分位数。data;Y=probnorm(1.96);/*标准正态分布Z小于1.96的概率*/put Y;q1=tinv(.95,2);/*自由度为2的t分布的0.95分位数*/q2=tinv(.95,2,3);/*自由为2,非中心参数为3的t分布的0.95分位数*/put q1=q2=;run;0.9750021049q1=2.9199855804 q2=13.894376071现在学习的是第9页,共49页利用HELP查找SAS系统提供的各种函数索引中键入:SAS FunctionHelp下拉菜单SAS 帮助与文件现在学习的是第10页,共49页SAS函数种类在SAS系统9.1版本,SAS函数分为二十五种类型,分别是算术函数、截取函数、数学函数、概率和密度函数、分位数函数、非中心函数、样本统计函数、随机数函数、财政金融函数、日期和时间函数、换算函数和特殊函数等。在SAS系统6.12版本,SAS函数分为十七种类型共有178个,SAS系统8.1版本,SAS函数分为二十二种类型共有319个函数。现在学习的是第11页,共49页现在学习的是第12页,共49页1.日期时间函数简介现在学习的是第13页,共49页现在学习的是第14页,共49页例1.1:计算两个日期之间相隔的天数data _null_;sdate=01jan2012d;edate=01jan2013d;actual=datdif(sdate,edate,act/act);days360=datdif(sdate,edate,30/360);put actual=days360=;run;data _null_;actual=datdif(01jan2002d,01jan2003d,act/act);days360=datdif(01jan2002d,01jan2003d,30/360);put actual=days360=;run;现在学习的是第15页,共49页例1.2:以日为单位计算当前日期的天数。data;x=date();y=today();format x y yymmdd10.;put x=y=;run;现在学习的是第16页,共49页例1.3:将时间值换算为以秒计数的计算方法。data;hms=hms(21,50,51);put hms=;x=21*60*60+50*60+51;put x=;mdy=mdy(08,18,2001);put mdy=;format mdy yymmdd10.;run;现在学习的是第17页,共49页练习1计算以下数据表中日期值所在的年季月以及处于某月的第几天、某周的第几天。当日期值date=14JUL2007d时,试问这一天是星期几?Date1991-01-021991-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现在学习的是第18页,共49页解答:data a;Input date YYMMDD10.;Cards;1991-01-021991-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;Proc print;Format date YYMMDD10.;run;Data b;Set a;year=year(date);qtr=qtr(date);month=month(date);day=day(date);Weekday=weekday(date);proc print noobs;format date YYMMDD10.;Run;现在学习的是第19页,共49页解答:data _null_;weekday=weekday(12JUL2007d);put weekday=;run;现在学习的是第20页,共49页2.数学函数ABS(x):求x的绝对值Mod(x,y):求x/y的余数MAX(x1,x2,x3,xn):求最大值 MIN(x1,x2,x3,xn):求最小值SQRT(x):求x的算术平方根 LOG(x):求x 的自然对数EXP(x):求指数函数exSIN(x)、COS(x)、TAN(x):正弦、余弦、正切函数.现在学习的是第21页,共49页例2:求-314的绝对值,31除以4的商的余数以及-314、-87、0、1127这4个数的最大值data _null_;x=abs(-314);y=mod(31,4);z=max(-314,-87,0,1127);put x=y=z=;run;现在学习的是第22页,共49页练习2ex2.1 计算0、1.57、3.14对应的正弦函数值,并将结果显示在输出窗口。ex2.2 计算e的0次幂,并计算1的自然对数。现在学习的是第23页,共49页解答:Data;a=sin(0);b=sin(1.57);c=sin(3.14);File print;Put a=6.2 b=6.2 c=6.2;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;Data;X=exp(0);Y=log(1);Put x y;Run;现在学习的是第24页,共49页3.数组函数现在学习的是第25页,共49页数组函数应用举例data;array mult5,10,2 mult1-mult100;a=DIM1(MULT);b=DIM2(MULT);c=DIM3(MULT);put a b c;run;例3:产生一个5102的三维数组,并提取各维度上元素的个数。现在学习的是第26页,共49页练习 3产生一个行变量名为2:6,列变量名为4:13的二维数组,输出各维度上的上界和下界。现在学习的是第27页,共49页解答:data;array mult2:6,4:13 mult1-mult50;a=HBOUND(MULT);b=HBOUND2(MULT);c=lBOUND(MULT);d=lBOUND(MULT,2);put a b c d;run;现在学习的是第28页,共49页4.样本统计量函数现在学习的是第29页,共49页简单统计量函数应用举例例4:请求出2、4、6、3、1这五个数的最大值、最小值、算术平均值、标准差、变异系数。data test4;input x1-x5;cards;2 4 6 3 1;run;data simple_statistics;set test1;max_x=max(of x1-x5);min_x=min(of x1-x5);mean_x=mean(of x1-x5);std_x=std(of x1-x5);cv_x=cv(of x1-x5);run;ods html;proc print data=simple_statistics;var max_x min_x mean_x std_x cv_x;run;ods html close;现在学习的是第30页,共49页用简便的方法实现例1中目的data simple_statistics;max_x=max(2,4,6,3,1);min_x=min(2,4,6,3,1);mean_x=mean(2,4,6,3,1);std_x=std(2,4,6,3,1);cv_x=cv(2,4,6,3,1);run;ods html;proc print data=simple_statistics;var max_x min_x mean_x std_x cv_x;run;ods html close;现在学习的是第31页,共49页练习4某农村地区1998年随机抽查测量10名13岁女孩的身高,资料如下,试求全距、均值、标准差、标准误、变异系数。145.1 143.3 153.2 152.3 150.6 148.1 144.0 137.1 158.2 146.7现在学习的是第32页,共49页解答:data aa;input x1-x10;cards;145.1 143.3 153.2 152.3 150.6 148.1 144.0 137.1 158.2 146.7;run;data bb;set aa;a=range(of x1-x10);b=mean(of x1-x10);c=std(of x1-x10);d=cv(of x1-x10);file print;put a b c d;run;现在学习的是第33页,共49页5.截取函数简介现在学习的是第34页,共49页SAS截取函数应用举例例5:请把STD=1.92354和CV=0.601106用3个不同的截取函数(ceil、int、round)进行运算,并分析这些函数的作用。data test5;STD=1.92354;CV=0.601106;a1=ceil(STD);b1=ceil(CV);a2=int(STD);b2=int(CV);a3=round(STD,0.001);b3=round(CV,0.001);ods html;proc print data=test2;Var a1-a3 b1-b3;run;ods html close;现在学习的是第35页,共49页练习5求小于等于31.77的最小整数;将1984.314保留2位小数。现在学习的是第36页,共49页解答:data;x=floor(31.07);y=round(1984.314,0.01);file print;put x y;run;现在学习的是第37页,共49页6.SAS概率函数现在学习的是第38页,共49页SAS概率函数应用举例例6:试求出服从标准正态分布的随机变量z取值分别小于等于-2.576、-1.960、-1.645、-1.282、0、1.282、1.645、1.960、2.576所对应的概率。data test3;a1=round(probnorm(-2.576),0.001);a2=round(probnorm(-1.960),0.001);a3=round(probnorm(-1.645),0.001);a4=round(probnorm(-1.282),0.001);a5=round(probnorm(0),0.001);a6=round(probnorm(1.282),0.001);a7=round(probnorm(1.645),0.001);a8=round(probnorm(1.960),0.001);a9=round(probnorm(2.576),0.001);Format a1-a9 5.3;ods html;proc print data=test3;Var a1-a9;run;ods html close;现在学习的是第39页,共49页练习 6设随机变量X服从自由度为3的中心卡方分布,计算X7.94的概率。现在学习的是第40页,共49页解答data;p=1-probchi(7.94,3);put p=;run;现在学习的是第41页,共49页7.SAS概率分布下分位数函数现在学习的是第42页,共49页例7:试求t临界值表。options LS=95 PS=55;data abc;array T(50,9);array df(50)df1-df50;g=1;k=1;do d=1 to 40,50,60,70,80,90,100,200,500,1000,100000000;df(k)=d;k+1;w=1;do alpha=0.50,0.20,0.10,0.05,0.02,0.01,0.005,0.002,0.001;p=1-alpha/2;b=tinv(p,d);b=round(b,0.0001);T(g,w)=b;w=w+1;Output;end;g=g+1;end;Title;title t临界值表;ods html style=journal;file print;put#1 3df alpha:140.50 230.20 310.10390.05 480.02 570.01 660.005 760.002 860.001;put#2 _;do L=1 to 50;c=L+2;df(50)=9999;put#c 1 df(L)4.0 13 T(L,1)6.4 21T(L,2)6.4 29 T(L,3)6.437 T(L,4)7.4 46T(L,5)7.4 55 T(L,6)7.4 64 T(L,7)8.4 74 T(L,8)8.4 84 T(L,9)8.4;end;run;ods html close;footnote;footnote note:df=9999 stands for df=100000000;现在学习的是第43页,共49页练习7设随机变量t(df),计算t分布的分位数tp(df),其中自由度和对应概率值分别为:n=1,5,10,20;p=0.10,0.90,0.95,0.975;现在学习的是第44页,共49页解答:data _null_;t1=tinv(0.10,1);t2=tinv(0.90,5);t3=tinv(0.95,10);t4=tinv(0.975,20);put t1=t2=t3=t4=;run;现在学习的是第45页,共49页8.SAS随机数函数1.UNIFORM(seed)和RANUNI(seed):产生均匀分布随机数函数;2.NORMAL(seed)和RANNOR(seed):产生正态分布随机数函数;3.RANEXP(seed):指数分布随机数函数;4.RANGAM(seed,alpha):伽马分布随机数函数;5.RANTRI(seed,h):三角分布随机数函数;6.RANCAU(seed):柯西分布随机数函数;7.RANBIN(seed,n,p):二项分布随机数函;8.RANPOI(seed,lambda):泊松分布随机数函数;9.RANTBL(seed,p1,pi,pn):离散分布随机数函数;10.Rand(dist,parm-1,parm-k):根据特定的分布产生随机数。现在学习的是第46页,共49页data pgm20_18;retain _seed_ 0;n=10;p=0.5;do _i_=1 to 1000;binom1=RANBIN(_seed_,n,p);output;end;drop _seed_ _i_;run;例8:产生二项分布(10,0.5)的随机数现在学习的是第47页,共49页产生1000个服从标准正态分布的随机数练习8:现在学习的是第48页,共49页2022/9/27感感谢谢大大家家观观看看现在学习的是第49页,共49页