SAS运算符学习教程.pptx
1SAS运算符介绍定义:SAS运算符是一些符号算术运算符比较运算符逻辑运算符SAS使用两种主要类型的运算符:前缀算符中缀算符第1页/共36页2前缀运算符用于变量、常数、函数或者用括号括起来的表达式。前缀算符有:加号,减号,NOT和符号(等价于not)。例如:+Y-25-COS(A)-(x1+x2-100)中缀运算符作用在算符两边的运算对象上,例如6(GT)大于 =(GE)大于等于 不大于 不小于IN 等于列表中的一个第4页/共36页5考虑表达式:A=B(1)数值比较如果A的值为4,B的值为3,则表达式A=B的值为0(假);若A的值为5,B的值为9,则表达式AADAMS是真的,它与表达式ANDRE,CANDRE,CLYDE一样,它们的值都是1。第6页/共36页7比较运算符经常出现在IF语句中例如:If xy then c=5;Else c=12;比较算符也可以用在赋值语句的表达式里例如:c=5*(x=y);因为表达式(x=y)首先被计算,它们的结果(0或1)替代括号中的表达式,所以该语句与上面语句是等价的。第7页/共36页83.逻辑算符逻辑算符逻辑算符也称为布尔逻辑算符也称为布尔(Boolean)算符,在表达式里通常用来连接一系列比较式。逻辑算符包括:算符,在表达式里通常用来连接一系列比较式。逻辑算符包括:&(AND)与;与;|(OR)或;或;(NOT)非非例如例如:age=25 AND sex=男男 age=25&sex=男男 age=25 OR sex=男男第8页/共36页 4.其他算符第9页/共36页105.运算次序关于运算次序,SAS有如下的三个准则:准则1:在括号里的表达式先计算;准则2:较高优先级的运算先被执行;准则3:对于相同优先级的算符,在公式左边的运算先被执行。(第一级除外)第10页/共36页11准则3的例外情况:1)对第一级,在公式右边的先做;(not 也是,注意乘方)2*3*2 2*(3*2)2)当两个比较算符围着一个量时,则等价于一个and运算。例如:12age20 12age and age ,p第二级:*/p第三级:p第四级:|(连接两个字符串)p第五级:,=,p第六级:(AND)p第七级:(OR)例 if(flavor=texture&variety=mandarin)then total=total*100;第12页/共36页13应用运算符进行数据操作1、生成新的变量Data new;input x year;x1=x*2;x2=log(x)-2;x3=x+year;if year=2000 then dum=0;else dum=1;cards;1 20002 .3 2002;run;proc print data=new;title 生成变量;run;第13页/共36页142、对数据进行筛选 案例案例案例案例:基于研究设计的需要,文章需要剔除以下公司:基于研究设计的需要,文章需要剔除以下公司:(1 1)剔除了研究变量数据缺失的公司;)剔除了研究变量数据缺失的公司;(2 2)由于金融行业的特殊性,本文将银行等金融)由于金融行业的特殊性,本文将银行等金融类上市公司排除在样本之外;类上市公司排除在样本之外;(3 3)此外,为了保证研究结论不受极端值的影响,)此外,为了保证研究结论不受极端值的影响,本文剔除了所用到的研究变量在本文剔除了所用到的研究变量在1%1%和和99%99%分位数之分位数之外的观测值。外的观测值。第14页/共36页15(1)剔除数据缺失的样本Data new1;input x year;x1=x*2;x2=log(x)-2;x3=x+year;if year=2000 then dum=0;else dum=1;if year=.then delete;x4=5*(x=x1);cards;1 20002 .3 2002;run;proc print data=new1;title 生成变量;run;第15页/共36页16(2)剔除某些特定的样本(如金融行业)Data new2;set new1;if x=1 then delete;Run;proc print data=new2;run;或Data new3;set sashelp.class;if sex=男 then delete;/*字符型区分大小写,内容打英文单引号*/Run;proc print data=new3;run;第16页/共36页17(3)剔除某些异常值Data new4;set sashelp.class;if age=14 then delete;Run;proc print data=new4;run;或Data new5;set sashelp.class;if 13age10 then delete;Run;第17页/共36页data oranges;/*先把oranges放入work*/input variety$flavor texture looks;total=flavor+texture+looks;if variety in(navel,Valencia)then total=total*10;if(flavortexture&variety=mandarin)then total=total*100;a=flavortexture*2;b=variety|.var;label total=总数;cards;navel 9 8 6 temple 7 7 7 Valencia 8 9 9 mandarin 5 7 8 ;proc sort data=oranges;by descending total;run;proc print data=oranges;/*var _numeric_;*/*var _character_;只显示数值或字符型*/title 对ORANGES数据集的品尝检验结果;run;练习:operator例第18页/共36页练习:对sashelp.class转存至work,并进行以下操作:新生成两行数据,写清自己及朋友的身高、体重;按以下公式生成新的变量,并按下表检查自己及朋友的数值是否正常;第19页/共36页SAS函数第20页/共36页21SAS函数一、数学函数:abs()绝对值、max()、min()、mod(x,y)取余数、sign(x)返回x的符号、sqrt(x)返回x的平方根、sum()、mean()、exp(x)、log(x)求x的自然对数、log10(x)、log2(x)、sin(x)、arsin(x)第21页/共36页二、截取函数:ceil(x)求大于等于x的最小整数,当x为整数时就是x本身,否则为x右边最近的整数。floor(x)求小于等于x的最大整数,当x为整数时就是x本身,否则为x左边最近的整数。int(x)求x扔掉小数部分后的结果。ROUND(x,eps)求x按照eps指定的精度四舍五入后的结果 比如ROUND(5654.5654,0.01)结果为5654.57 ROUND(5654.5654,10)结果为5650。第22页/共36页三、字符函数:index(S,S1)在s中查找s1的位置,找不到时返回0。substr(S,p,n)从字符串s中的第p个字符开始抽取n个字符长的子串scan(S2,n)在s2中查找第n个单词upcase(S)把字符串s中所有小写字母转换为大写字母后的结果。compress(S,S1)把S 中字符S1压缩掉第23页/共36页24四、日期时间函数:weekday()由SAS日期值date得到星期几,从周日开始算day()返回几号month()返回第几月qtr()返回第几季度year()返回第几年SAS系统存贮日期值为:1960年1月1日到指定日期之间的天数SAS存贮时间值为:从午夜开始到指定时间的秒数日期时间值存贮为:1960年1月1日午夜到指定日期时间之间的秒数第24页/共36页25五、概率统计函数:probnorm(x)标准正态分布函数其他概率统计函数:常用sas函数汇总-参考资料第25页/共36页六、各样本统计函数n(of X1-Xn)返回X1-Xn之间有多少个非缺失数据nmiss(of X1-Xn)返回X1-Xn之间有多少个缺省值var(of x1-xn)返回X1-Xn方差std(of x1-xn)返回X1-Xn标准差第26页/共36页七、随机数函数:rannor(seed)返回正态分布的随机数,seed为任意数值常数。在同一个数据步中对同一个随机数函数的多次调用将得到不同的结果,但不同数据步中从同一种子出发将得到相同的随机数序列。Functions例第27页/共36页data A;input x1-x5 x6$date yymmdd15.;/*format date yymmdd10.表示date年月日共占10位;1960.1.1开始计算间隔天数*/x7=o;x8=I am a student;/*x7、x8 是字符串*/*以下是数学函数*/a1=max(x1,x2);/*x1,x2的最大值返回给a1*/a2=sum(x1,x2);a3=sign(x3);a4=sqrt(x5);a5=mean(x1,x2);/*以下是截取函数*/b1=floor(a5);/*a5取较小的整数*/*以下是字符函数*/c1=index(x6,x7);/*x6中查找x7的位置*/c2=substr(x6,3,3);/*x6第3个字符开始共取3个*/第28页/共36页 c3=scan(x8,2);c4=upcase(x8);c5=compress(x6,x7);/*以下是时间函数*/d1=weekday(date);/*求date是星期几*/d2=year(date);d3=qtr(date);d4=day(date);/*以下是概率函数*/e1=probnorm(0);e2=n(of x1-x5);e3=nmiss(of x1-x5);e4=var(x1,x2);e5=std(x1,x2);/*以下是随机数函数*/f1=ranuni(1);cards;1 2 3 5 -6 amazon 2004/9/22 3 5 0 8 0 box 1960/1/2 9 10 -7 9 4 check 1960/1/1 7 6 .1 8 delete 1959/12/31 -2.5-2.3 3 1 2 desk 2015/4/28 ;run;proc print;run;第29页/共36页运算练习1结果显示在output,否则在log第30页/共36页运算练习2第31页/共36页运算练习3第32页/共36页运算练习4第33页/共36页第50章_SAS函数简介-例题将该PDF中的程序复制入SAS进行验证学习从例5-19开始,注意核实分布的区间是否写反第34页/共36页n:绝对概念,从第n列开始读+n:相对概念,从当前开始,移n列开始读#n :进行指针控制,跳到第n行开始读第35页/共36页谢谢您的观看!第36页/共36页