您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > SAS基础与金融计算4
1SAS基础与金融计算游家兴厦门大学经济学院计统系2SAS运算符介绍定义:SAS运算符是一些符号算术运算符比较运算符逻辑运算符SAS使用两种主要类型的运算符:前缀算符中缀算符3前缀运算符用于变量、常数、函数或者用括号括起来的表达式。前缀算符有:加号,减号,NOT和符号^(等价于not)。例如:+Y-25-COS(A)-(x1+x2-100)中缀运算符作用在算符两边的运算对象上,例如68。中缀算符一般分为四类:算术算符、比较算符、逻辑算符和其它算符(最大、最小和连接)。41.算术算符算术算符表示执行一种算术运算,包括:**乘方*相乘/相除+相加-相减如果算术算符有一个运算对象是缺失值,运算结果也是缺失值。例如,y=x3+.;则y的值为缺失值(.)52.比较算符比较算符确定两个变量之间的一种关系,如果这种关系成立,则输出结果为1(真);如果它不成立,则输出结果为0(假)。比较算符包括:=(EQ)等于^=(NE)不等于(GT)大于(LT)小于=(GE)大于等于=(LE)小于等于^不大于^不小于IN等于列表中的一个6考虑表达式:A=B(1)数值比较如果A的值为4,B的值为3,则表达式A=B的值为0(假);若A的值为5,B的值为9,则表达式A=B的值为1(真);若A与B的值均为5,则表达式成立,且其值为1。7(2)字符的比较比较的对象可以是数值也可以是字符,但比较的结果总是数值1(真)或0(假)。字符运算对象在字符之间从左到右被比较。字符次序用机器排列次序确定(即按ASCII码排列序列)。例如,表达式’GRAY’’ADAMS’是真的,它与表达式’ANDRE,C’’ANDRE,CLYDE’一样,它们的值都是1。8比较运算符经常出现在IF语句中例如:Ifxythenc=5;Elsec=12;比较算符也可以用在赋值语句的表达式里例如:c=5*(xy)+12*(x=y);因为表达式(xy)和(x=y)首先被计算,它们的结果(0或1)替代括号中的表达式,所以该语句与上面语句是等价的。93.逻辑算符逻辑算符也称为布尔(Boolean)算符,在表达式里通常用来连接一系列比较式。逻辑算符包括:&(AND)与;|(OR)或;^(NOT)非例如:age=25ANDsex=’男’age=25&sex=’男’age=25ORsex=’男’104.运算次序关于运算次序,SAS有如下的三个准则:准则1:在括号里的表达式先计算;准则2:较高优先级的运算先被执行;准则3:对于相同优先级的算符,左边的运算先被执行。11各运算符的优先等级(排在前面的优先):1级:**,^(not)2级:*,/3级:+,-4级:,=,=,^=,,=,^,^5级:and6级:|(or)12准则3的例外情况:1)对第一级,右边的先做;(not也是,注意乘方)2**3**2=2**(3**2)2)当两个比较算符围着一个量时,则等价于一个and运算。例如:12age20=12ageandage2013应用运算符进行数据操作1、生成新的变量Datanew;setold;x1=x**2;x2=log(x)-2;x3=x+y;ifyear=2000thendum=0;elsedum=1;Run;142、对数据进行筛选基于研究设计的需要,本文剔除了以下公司:(1)剔除了研究变量数据缺失的公司;(2)由于金融行业的特殊性,本文将银行等金融类上市公司排除在样本之外;(3)此外,为了保证研究结论不受极端值的影响,本文剔除了所用到的研究变量在1%和99%分位数之外的观测值。15(1)剔除数据缺失的样本Datanew;setold;ifx=.thendelete;Run;16(2)剔除某些特定的样本(如金融行业)Datanew;setold;ifcode='000562'orcode='000001'orcode='000563'orcode='600015'orcode='600016'orcode='600030'orcode='600036'orcode='600816'orcode='600000'orcode='601998'orcode='601328'orcode='601166'orcode='601318'orcode='601398'orcode='601628'thendelete;Run;17(3)剔除某些异常值Datanew;setold;ifx=(GE)某个数值thendelete;Run;或:Datanew;setold;ifx;Run;18SAS数据处理小技巧19(1)put和input语句Put语句:对数值型变量规定输出格式格式:Put(variable,format)将数值型变量转化成字符型变量Datatest2;settest1;x2=put(x1,8.);Run;20Input语句:对字符型变量定义输出格式格式:Input(variable,format)将字符型变量转化成数值型变量Datatest2;settest1;x2=input(x1,8.);Run;21(2)Substr语句Substr——字符截取函数格式:Substr(s,p,n)从字符串s中的第p个字符开始抽取n个字符的子串。Datatest2;settest1;x2=substr(x1,2,4);Run;22(3)output语句通过output语句同时生成多个子数据格式:Data数据集1数据集2…;set原数据集;if条件thenoutput数据集1;if条件thenoutput数据集2;……Run;23Datatest1test2;settotal;ifeps0thenoutputtest1;ifeps=0thenoutputtest2;Run;24(4)剔除变量或保存变量drop和keep语句:Datanew;setold;dropx1x2x3;Run;Datanew;setold;keepx1x2x3;Run;Datanew(droporkeep=x1x2x3);setold;Run;25(5)更改变量名Rename语句Datanew;setold;renamex1=y1x2=y2x3=y3…;Run;26(6)Sort语句(排序语句)详解较为有用的可选项有:(1)noduplicates/noduprec/nodup,在排序之后,检查和删除相邻的重复观测。注意:此选项不同于nodupkey,它比较的是整个观测,而不仅仅是by的关键值。(2)nodupkey,检查和删除by的关键值重复的观测。Procsortdata=out=可选项;bydescending变量1……;Run;27(7)计算秩序或分组可选项有:Groups=n,要求分组得分,其中n是组数。得分为0到n-1的整数。n=100、10、4,表示分别产生百分数秩、十分位数秩和四分位数秩。Procrankdata=out=可选项;var变量1变量2…;ranks新变量1新变量2…;Run;28本节课上机操作(1)对上节课生成的最终数据集total进行如下操作:(1)剔除金融业上市公司;(2)剔除每股收益为负的上市公司;(3)由于数据集中年涨跌幅采用百分比表示,建立一个新的变量,采用小数表示。(4)建立一个新的变量,表示除第一大股东外其它股东所持有的股份比例。29本节课上机作业(2)公共信箱下载数据集test1和test2,运用SAS将test1和test2纵向拼成新的数据test。根据股票收益率大小将test分成四个组,并形成四个子数据集:tmp1,tmp2,tmp3,tmp4。在数据集test中,第一大股东持股比例在50%以上且每股收益超过1元的公司有多少家?
本文标题:SAS基础与金融计算4
链接地址:https://www.777doc.com/doc-222143 .html