经济统计分析SAS.ppt_第1页
经济统计分析SAS.ppt_第2页
经济统计分析SAS.ppt_第3页
经济统计分析SAS.ppt_第4页
经济统计分析SAS.ppt_第5页
已阅读5页,还剩325页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、经济统计学,第一章 sas概述 第一节 sas简介 一、sas的功能介绍 1、数据获取 2、数据管理 3、数据分析 4、数据表示 5、应用软件开发,二、基本的数据指标 1、加权和 2、均值 3、总和 4、标准差 5、方差 6、偏度 7、峰度 8、加权平方和 9、加权离差平方和,10、变异系数 11、均值的标准误差 三、数据分析的基本方法 折线图的介绍 例如:data abc; input name $ sex $ math chinese english; cards; li m 65 62 78 zhao f 86 72 83 wang m 76 81 81 zhang f 74 84 69

2、,yu m 65 72 85 xiao f 86 72 87 qian m 76 81 91 ; proc univariate data=abc ; var math; run; 结果如下:,the sas system 18:51 sunday, april 28, 1996 1 the univariate procedure variable: math moments n 7 sum weights 7 mean 75.4285714 sum observations 528 std deviation 8.59955702 variance 73.952381 skewness 0

3、.03373989 kurtosis -1.2497017 uncorrected ss 40270 corrected ss 443.714286 coeff variation 11.4009279 std error mean 3.25032704,basic statistical measures location variability mean 75.42857 std deviation 8.59956 median 76.00000 variance 73.95238 mode 65.00000 range 21.00000 interquartile range 21.00

4、000 note: the mode displayed is the smallest of 3 modes with a count of 2. tests for location: mu0=0 test -statistic- -p value- students t t 23.20646 pr |t| = |m| 0.0156 signed rank s 14 pr = |s| 0.0156,quantiles (definition 5) quantile estimate 100% max 86 99% 86 95% 86 90% 86,the sas system 18:51

5、sunday, april 28, 1996 2 the univariate procedure variable: math quantiles (definition 5) quantile estimate 75% q3 86 50% median 76 25% q1 65 10% 65 5% 65 1% 65 0% min 65,extreme observations -lowest- -highest- value obs value obs 65 5 74 4 65 1 76 3 74 4 76 7 76 7 86 2 76 3 86 6,第二节 sas系统的安装 一、 sas

6、系统安装的注意事项 1、时间应调整到96年5月以前。 2、安装的中间有些文件不存在,可忽略。 二、 sas系统安装的步骤 1、启动sas系统安装的程序setup。 2、将硬盘保护卡解除。输入密码后,硬盘保护卡将解除。,第三节 sas系统的概貌 一、sas系统的启动 1、双击桌面上的sas快捷方式 2、从开始菜单进行启动 二、sas窗口介绍 1、资源管理器窗口 2、编辑窗口 3、日志窗口 4、输出窗口 5、结果窗口 三、sas主要菜单介绍,第四节 sas命令行和工具栏 一、sas命令行的主要功能 二、sas工具栏的主要操作,第二章 sas基本概念 第一节 sas数据集 一、sas数据集的概念 1

7、、sas数据集的概念 sas数据集是由若干行和若干列组成的表格,类似于一个矩阵。sas数据集是由sas系统建立的特有的数据存储格式。可以将其看作一个文件。 2、sas数据集的构成 数据集名+扩展名组成 数据集的第一个字母必须是字母或下划线 观测、变量的基本涵义,二、sas数据集的分类 1、临时数据集 存储在work目录下的数据集为临时数据集 2、永久数据集 存储在sasuser目录下的数据集为永久数据集,第二节 sas数据库 一、sas数据库的涵义 在sas系统中数据库为在sas系统下的一个目录下,与其它系统中的数据库是有所不同的。 二、sas数据库的构成及区别 在sas系统中数据库为:wor

8、k、sasuser、sashelp 单水平名、两水平名;临时数据集使用单水平名,永久数据集使用两水平名。,第三节 sas程序 一、sas程序的构成 1、 data步(数据集部分) data 数据集; input 变量; cards; 2、proc步(处理程序部分) 二、sas程序的特点 数据的输入、数据、数据的处理程序,第三章 建立sas数据集 第一节 编辑程序导入数据 一、新建数据集 通过程序编辑窗口进行数据集的建立 应注意的事项: 1、数据排列格式必须一致,各数据间必须用空格或制表符分隔开。 2、缺失的数据用点号表示。 3、字符型数据的长度不能超过8个字符。 4、变量名与数据值要对应。 二

9、、由已有的数据集建立新的数据集 set 命令 set 数据集名;数据集名为已存在的,例如: data abc; input name $ sex $ math chinese english; cards; li m 65 62 78 zhao f 86 72 83 wang m 76 81 81 zhang f 74 84 69 yu m 65 72 85 xiao f 86 72 87 qian m 76 81 91 ;,proc univariate data=abc ; var math; run; data fff; set abc; run proc sort data=fff ;

10、 by english; run; proc print; run;,第二节 利用viewtable新建数据集 在工具栏中点击tools后,再点击table edit进行表格的编辑和创建。 第三节 将其他格式的数据文件导入数据集 一、标准格式的数据文件的转换 二、自定义格式的数据转换 第四节 利用sas assist创建数据集 一、菜单执行方式 1、单击solutions菜单下的assist选项,启动sas assist 2、在命令行中输入assist后,单击执行符,启动sas assist,二、利用sas assist创建数据集的过程 1、初始化界面 2、启动data management(

11、执行数据管理菜单) 3、启动create data(创建数据集),选择interactively(交互方式) 三、交互方式数据集的创建 单击1、enter data one record at a time 2、 enter data in tabular form 四、利用sas assist创建两变量的数据集 (for x-y plots) 利用sas assist创建两变量的数据集,进行数据分析。返回到assist菜单,选择graphics进行分析。,第四章 数据集的浏览与修改 第一节 利用viewtabale方式 选中数据集,双击打开数据文件,进行浏览。 第二节 sas insight

12、 一、利用insight 进行数据集的浏览 sas insight是sas系统中一个重要的模块,具有管理数据和分析数据的能力。进入sas insight模块的方法是选择solutions菜单下的analysis命令,然后在analysis中选择interactive data analysis。,二、等差数列的形成 选中菜单中的fill values命令,再确定起始变量和结束变量,形成等差数列。 第三节 sas assist 先启动assist菜单,选择其中的edit/browse功能。 第四节 sas assist 一、表编辑方式 1、先启动assist菜单,选择其中的edit/browse

13、功能。,2、选择编辑方式(表编辑方式、单个观测编辑方式) 3、选择编辑文件(如果不知文件的具体位置,单击table/column来查找)。 二、行编辑方式 1、选择编辑文件 2、选择浏览方式,第五章 sas语言初步 第一节 sas语言的组成 一、sas语句 在过程步中体现 二、sas表达式 二、输出语句 应用put语句可以进行数据的输出 data ; a=23; d=a*3; put “d=“ d ; run;,三、分支语句 1、if分支语句 if 条件 then 执行语句; else 执行语句; 在有些时候,满足条件后需要执行的操作有很多条,不可能都写在一条命令里面。这时 可以使用do语句。

14、在要执行的第一条语句前写”do”;,在最后一条要执行的语句后写”end”。,例: data ; a=53; b=a*3; if b100 then do; c=b-100; put”new value of b is” c; end; run;,带有else语句的例子: 例如: data ; a=53; b=a*3; if b100 then do; c=b-100; put”new value of b is” c; end; else put”value of b is “ b; run;,例如:data ; a=53; b=a*3; if b100 then do; c=b-100; p

15、ut”c= “ c; end; run;,2、select语句 形式一: select(表达式) when(表达式的值) 执行语句1; when(表达式的值) 执行语句2; when(表达式的值) 执行语句3; otherwise执行语句4; end;,例如:data ; a=11 ; select(a) ; when(1,2,3) put 第一季度 ; when (4,5,6) put第二季度 ; when (7,8,9) put第三季度 ; otherwise put第四季度 ; end ; run ;,例如: data ; a=5 ; select ; when(a4) put第一季度

16、; when(a7) put第二季度 ; when(a10) put第三季度 ; otherwise put第四季度 ; end ; run ;,形式二: select when(表达式的值) 执行语句1; when(表达式的值) 执行语句2; when(表达式的值) 执行语句3; otherwise执行语句4; end;,例:data ; a=11; select; when(a in(1,2,3) put第一季度 ; when (a in (4,5,6) put第二季度 ; when (a in (7,8,9) put第三季度 ; otherwise put第四季度 ; end; run;

17、,例:data ; a=9; select; when(a4) put第一季度 ; when(a7) put第二季度 ; when(a10) put第三季度 ; otherwise put第四季度 ; end; run;,四、循环语句 1、形式一: do 变量=起始值 to 结束值 by 步长; 循环体; end;,例1:循环计算1+2+3+100的结果 data ; s=0; i=0; do i=1 to 100 by 1; s=s+i; end; put the sum of 1 to 100 is s; run;,2、形式二: do while(循环满足的条件); 循环体; end; 例

18、如:data ; s=0; i=0; do while(i=100); s=s+i; i=i+1; end; put the sum of 1 to 100 is s ; run;,3、形式三: do until(循环终止的条件); 循环体; end; 例如: data ; s=0; i=0; do until(i100); s=s+i; i=i+1; end; put the sum of 1 to 100 is s; run;,第六章 sas语言中的常用函数 第一节 算术函数 算术函数是sas系统中最常用的函数,主要包括以下函数。 abs(x):求x的绝对值。 dimn(x):求数组中的元

19、素个数,x为数组名。 dim(x,y):求多维数组的某一数组中的元素个数,x为数组名,y为维数。 hboundn(x):求数组的上界。 hbound(x,y):求多维数组中的某一维的上界,x为数组名,y为维数。, lboundn(x):求数组的下界。 lbound(x,y):求多维数组中的某一维的下界,x为数组名,y为维数。 max(x,y,z):求一串数中最大的一个。 例如:max(1,2,3)=3 min(x,y,z):求一串数中最小的一个。 例如:min(1,2,3)=1 mod(x,y):求x除以y 的余数。 例如:mod(7,4)=3, sign(x):求x的字符号,如果为负数则返回

20、-1,如果为正数则返回1。 例如:sign(-100)=-1,sign(23)=1 sqrt(x):求x的平方根,x只能为非负数。 例如:sqrt(100)=10 第二节 逻辑函数 band(x,y):取两个逻辑值0和1的与运算。 例如:band(0,1)=0; band(1,0)=0 band(1,1)=1; band(0,0)=0, bor(x,y):取两个逻辑值0和1的或运算。 例如:bor(0,0)=0 bor(1,0)=1 bor(0,1)=1 bor(1,1)=1 第三节 字符函数 byte(n):第n个ascll码值对应的字符。 collate(x,y):起始位置为x,终止位置为

21、y之间所有的ascll码。 compbl(x):将字符串x中多余的空格去掉。 例如:compbl(a b c)=a b c, compress(x,y):把字符串x中包含的字符串y去掉。 例如:compresss(abcd,a)=bcd dequote(x):去掉字符串x的引号。index(x,y):返回y在x中的位置,如果x不包含y则返回0。 例如:index(abcd,d)=4 index(abcd,f)=0 indexc(x,y1,y2)。 indexw(x,y):x中是否包含y这个单词。 例如:indexw(abcd efg,abcd)=1 indexw(abcdefg,abcd)=0

22、, left(x):将字符串x左对齐。 length(x):返回字符串x的长度。 例如:length(abcd)=4 length(abcd efg)=8 lowcase(x):将x中的字母变为小写。 例如:lowcase(abcd)=abcd quote(x):给x加上一个引号。 rank(x):给出字符x的ascll码对应的位置数。 例如:rank(a)=97 rank(b)=98 repeat(x,n):将字符串x重复n次。 例如:repeat(ab,2)=ababab, reverse(x):将字符串x颠倒过来。 例如:reverse(abcd)=dcba right(x):将字符串x

23、右对齐。 scan(x,n):返回字符串x中的第n个单词。 例如:scan(“abcd a”,2)=a scan(“abcd a”,1)=abcd soundex(x):将字符串x编码以便于查找。 substr(x,n):从字符串中抽取子集,将第n个字符以前的字符都删掉。 例如:substr(“abcd”,2)=bcd substr(“abcd”,3)=cd, translate(string,x,y):将字符串string中的y字符替换为x字符。 例如:translate(abcd a、a、c)=abad a tranwrd(string,x,y):将字符中的单词x替换为单词y。 例如:tr

24、anwrd(abcd a、a、cd)=abcd cd trim(x):去掉字符串x的末尾的空格。 例如:trim(abcd )=abcd upcase(x):将字符串x中的字母变为大写。 例如:upcase(abcd)=abcd, verify(string,x):返回string 中第一个不为x的字符的位置。 例如:verify(abcd,a)=2 verify(abcd,b)=1 第四节 字符串匹配函数 rxmatch(rx,string):返回匹配条件的子串的开始位置。 rxparse(pattern-expression):分析模式并返回数据。 第五节 货币转换函数 eurocurr(

25、from-currency-amount,from-currency-code,to-currency-code):其中from-currency-amount为需要转换的货币的数量,from-currency-code为需要转换的货币种类,to-currency-code为希望转换的货币种类。,第五节 货币转换函数 eurocurr(from-currency-amount,from-currency-code,to-currency-code):其中from-currency-amount为需要转换的货币的数量,from-currency-code为需要转换的货币种类,to-currenc

26、y-code为希望转换的货币种类。 第六节 金融函数 compound(amount,future,number):返回福利系数。 convx(y,f,c(1),,c(k)):返回列举出的现金流的曲率。 convxp(a,c,n,k,k0,y):返回固定周期的现金流的曲率。, daccdb(period,value,years,rate):返回折旧值。 daccdbsl(period,value,years,rate):使用直线折旧法返回的残值。 deptab(period,value,t1,tn):从特定的表中的数据返回折旧值。 depsl(period,value,years):返回直线折

27、旧。 intrr(frequency,c0,c1,cn):返回内部 收益率。 irr(frequency,c0,c1,cn):返回百分比收益率。, mort(amount,payment,rate,number):返回摊还系数。 netpv(rate,frequency,c0,c1,cn):返回现金流的净现值,其中利率以分数形式给出。 npv(rate,frequency,c0,c1,cn):返回现金流的净现值,其中利率以百分比形式给出。 pvp(a,c,n,k,k0,y):返回固定周期的现金流的净现值。 saving(future,payment,rate,number):返回周期性存款的未

28、来价值。 yieldp(a,c,n,k,k0,p):返回固定周期的现金流的到期收益律。, 例1:使用compound求出本金1000元,年利率为0.1,3年后的本息合计。 data; a=compound(1000,.,0.1,3); put a; run;结果是1331 例2:初始资产是100万,每年折旧10%,那么三年一共折旧了多少资产? data; a=daccdb(3,100,1,0.1); put a; run; 结果是27.1万 计算公式为100-100(1-10%)=27.1,第七节 目录函数 cexis(entry,u):验证目录是否存在,并返回一个值。 libname(lib

29、ref,sas-data-libref,engine,options):为数据库分配一个名称 libref(libref ):验证一个名称是否已经被分配给数据库 第八节 数学函数 airy(x):返回airy 函数的值。 dairy(x):返回airy函数的衍生值。 digamma(argument):返回digamma函数的值。, erf(argument):返回偏差函数的值。 exp(argument):指数函数。 gamma(argument):返回伽马函数的值。 ibessel(nu,x,kode):返回修正的bessel函数值。 jbesse(nu,x):返回bessel函数值。 l

30、gamma(argument):返回伽马函数值的对数。 log(argument):自然对数函数。 log2(argument):以2为底的对数函数。 log10(argument):以10为底的对数函数。, trigamma(argument):返回三元的伽马函数值。 第九节 概率与密度函数 cdf(dist,quantile,parm-1,parm-k):计算累计分布函数。 logpdf(dist,quantile,parm-1,parm-k):计算概率密度函数的对数值。 logsdf(dist,quantile,parm-1,parm-k):计算生存函数的对数值。 odf|pmf(dis

31、t,quantile,parm-1,parm-k):计算概率密度函数。 poisson(m,n):返回poisson分布的概率值。, probbeta(x,a,b):返回beta分布的概率值。 probbnml(p,n,m):返回二项式分布的概率值。 probchi(x,df,nc):返回卡方分布的概率值。 probf(x,ndf,ddf,nc):返回f分布的概率值。 probgam(x,a):返回伽马分布的概率值。 probhypr(n,k,n,x,r):返回超几何分布的概率值。 probnegb(p,n,m):返回负二项式分布的概率值。, probbnrm(x,y,r):标准的二元正态函数

32、。 probnor(x):标准的正态分布函数。 probt(x,df,nc):返回t分布的概率值。 sdf(dist,quantile,parm-1,parm-k):计算生存函数。 例如3求出标准正态函数在0处分布函数值,编制程序将函数值输出。 data; a=probnorm(0); put a ;run; 输出的结果是0.5,这说明服从正态分布的变量取值小于0的可能性为0.5。,第十节 分位数函数。 betainv(p,a,b):返回分布的分位数。 cinv(p,df,nc):返回t分布的分位数。 finv(p,ndf,ddf,nc):返回f分布的分位数。 gaminv(p,a):返回伽马

33、分布的分位数。 probit(p):返回标准正正态分布的分位数。 tinv(p,df,nc):返回t分布的分位数。 例如4求出标准正态函数取值0.5时对应的分位数(由正态分布的性质可只知结果应该为0)。 data; a=probit(0.5);, put a ; run; 结果为-4.06379e-17,这已经是一个非常接近于0的数了。 第十一节 随机数函数 normal(seed):返回服从正态分布的随机数。 ranbin(seed,n,p):返回服从二项式分布的随机数。 rancau(seed):返回服从柯西分布的随机数。 rand(dist,parm-1):根据特定的分布 产生随机数,该

34、函数还处于实验阶段。, ranexp(seed):产生服从指数分布的随机数。 rangam (seed,a):产生服从伽马分布的随机数。 rannor(seed):产生服从正态分布的随机数。 ranpoi(seed,m):产生服从poisson分布的随机数。 rantbl(seed,p1,pi,pn):由列表的概率分布产生随机数。 rantbi(seed,h):产生服从三角分布的随机数。, ranuni(seed):产生服从均匀分布的随机数。 uniform(seed):产生服从均匀分布的随机数。 第十二节 样本统计函数 使用这些函数可以计算各种样本统计量,函数的具体表达式已经在前面给出。 c

35、ss(argument,argument,):返回离差平方和。 cv(argument,argument,):返回变异系数。 kurtosis(argument,argument,):返回峰度,或者成为四阶矩。, max(argument,argument,):返回最大值 min(argument,argument,):返回最小值 mean(argument,argument,):返回算术平均值 missing(numeric-expression|character-expression):检验数据是否含有缺失值。 n(argument,argument,);返回样本个数,不包括缺失值。 n

36、miss(argument,argument,):返回样本缺失值个数。, range(argument,argument,):返回最大值与最小值的差。 skewness(argument,argument,argument,):返回偏度。 std(argument,argument,):返回标准差。 stderr(argument,argument,):均值估计的标准差。 sum(argument,argument,):样本的和。 uss(argument,argument,):平方和。 var(argument,argument,):方差。, 例如5 使用css函数计算一组数据:1,3,5,

37、7,9的离差平方和。编辑如下程序可以完成计算并输入离差平方和。 data; a=css(1,3,5,7,9); put a ; run; 计算出的离差平方和是40,它反映了数据的分散程度。 例如6 民生银行(600016)的股票在连续5个交易日内的上;收盘价分别为:,7月10日 7月11日 7月12日 7月13日 7月14日 12.04 12.10 12.18 12.07 12.15 计算价格的均值、标准差、偏度的程序如下。 data; a=mean(12.04、12.10、12.18、12.07、12.15); b=std(12.04、12.10、12.18、12.07、12.15); c=

38、skewness(12.04、12.10、12.18、12.07、2.15); put a b c;run; 计算结果中均值为12.108,标准差为0.05718,偏度为0.1727。均值说明了5天之内价格波动的中间位置,标准差说明了波动范围的大小,而偏度则体现了数据是否均匀分布。,第十三节 地区以及邮政编码函数 fipname(expression):将fips代码转换为大写的州的名称。 fipname(expression):将fips代码转换为大小写混合的州的名称。; fipstate(expression):将fips代码转换为两个字的州的名称。 stfips(postal-code)

39、:将州的邮政编码转换为州的fips代码 stname(postal-code):将州的邮政编码转换大写的州的名称。 stname(postal-code):将州的邮政编码转换为大小写混合的州的名称。;, zipfips(zip-code):将邮政编码转换为fips州代码 zipname(zip-code):将邮政编码转换为大写的州的名称。 zipnamel(zip-code):将邮政编码转换为大小写混合的州的名称 zipstate(zip-code):将邮政编码转换为州的邮政区号 例如7 找出代码49对应的州的名称。 data; a=fipnamel(49); put a ;, put a ;

40、 run; 输出结果为utsh,即:犹他州。 第十四节 三角函数 arcos(argument):反余弦函数。 例如;arcos(0.5)=1.57 arcos(1)=0 arsin(argument):反正弦函数。 atan(argument):反正切函数。 cos(argument):余弦函数。 cosh(argument):双曲余弦函数 sin(argument):正弦函数 sinh(argument):双曲正弦函数, tan(argument):正切函数 tanh(argument):双曲正弦函数 第十五节 截断函数 截断函数可以对数值进行一些处理,包括取最接近的整数、四舍五入取近似值

41、、截剪数值等操作。 ceil(argument):返回大于或等于自变量的最小的整数。 例如:ceil(0.5)=0 ceil(2)=2 ceil(-0.5)=0 floor(argument):返回小于或等于自变量的最大的整数。 例如:floor(0.5)=0 floor(2)=2 floor(-0.5)=-1, fuzz(argument):当自变量在1e-12内时返回离它最近的整数。 int(argument):返回自变量的整数部分。 例如:int(0.5)=0 int(-2.61)=-2 round(argument):返回近似值,当前的变量为真数,后面的为近似单位。 例如:round(

42、1.234,1)=1 round(1.234,0.1)=1.2 round(1.234,0.01)=1.23 round(1.234,0.001)=1.234 trunc(argument):将数据截为特定的长度。,第十六节 变量信息函数 getvarc(data-set-id,var-num):返回数据集中的字符型变量的值。 getvarn(data-set-id,var-num):返回数据集中的数值型变量的值。 varfmt(data-set-id,var-num):返回数据集中的变量的值。 varinfmt(data-set-id,var-num):返回数据集中的变量的输入方式。 var

43、label(data-set-id,var-num):返回数据集中的变量的标签。 varlen(data-set-id,var-num):返回数据集中的变量的长度。, varname(data-set-id,var-num ):返回数据集中的变量的名称。 varnum(data-set-id,var-num ):返回变量在数据集所有变量中的位置。 varray(name):检验一个变量是否为数组,并返回一个值。 varrayx(expression ):检验一个表达式的值是否为数组并返回一个值。 vartype(data-set-id,var-num ):返回数据集的变量的数据类型。 vfor

44、mat(var ):返回与变量相关的数据格式。, vformatd( var ) :返回与变量相关的十进制的数据格式。 vformatn(var ):返回变量的格式名称。 vformatnx(expression var ):返回表达式的结果的格式的名称。 vformatw(var):返回给定变量的格式的宽度。 vformatwx(expression ):返回表达式的结果的格式宽度。 vformatx(expression):返回与表达式结果相关的格式。 vinarray(var):检验给定的变量是否在一个数组中,并返回一个值。, vinarrayx(expression ):检验给定的表达

45、式的值是否在数组中,并返回一个值。 vinformat(var):返回给定变量相关的输入格式。 vinformatd(var ):返回给定变量的输入格式的二进制值。 vinformatdx(expression ):返回给定表达式结果的输入格式的二进制值。 vinformatn(var ):返回给定变量相关的输入格式的名称。 vinformatnx(expression ):返回给定表达式结果相关的输入格式的名称。, vinformatw(var ) :返回给定变量的输入格式的宽度。 vinformatwx(expression):返回给定表达式结果相关的输入格式宽度。 vinformatx(

46、expression ):返回给定表达式结果相关的输入格式。 vlabel(var):返回给定变量的标签。 vlabelx(expression ):返回给定表达式的标签。 vlength(var ) :返回给顶变量分配的大小。 vlengthx(expression ):返回特定表达式结果的编辑时所占大小。 vname(var ):返回变量的名称。, vnamex(expression ):将表达式的值作为一个变量的名称。 vtype(var):返回给定变量的名称。 vtypex(expression):给出特定表达式的值的类型。 第十七节 日期时间函数 datdif(sdate,edate

47、,basis):返回两个日期之间相距的天数。 date():返回当前的日期作为sas日期数据。 datejul(julian-date):将julian日期格式转换为sas日期格式。, datepart(datetime):从日期时间格式的数据中抽取日期。 datetime():返回当前日期时间值。 day(date):从sas日期值得出是几号。 dhmsdate,hour,minute,second):从日期、小时、分钟、秒四个数值得到sas日期时间值。 hms(hour,minute,second):从小时、分钟、秒三个值返回一个sas日期时间值。 hour():从sas时间或sas日期时

48、间中返回小时的数值。 intck(interval,form,to):返回给定时间段中的间隔的个数。,intnx(interval,start-form,increment):返回在一定时间间隔后的sas日期时间值。 juldate(date):将sas日期格式转换julian为日期。 mdy(month,day,year):从月、日、年得到一个sas日期值。 minute(time|datetime):从时间值或日期时间值中抽取分钟值。 month(date):从日期中得到月份。 qtr(date):从sas日期值得到对应的季度。 secound(datetime)从sas时间值或sas日期

49、时间值中得到秒。,data; a=intck(day,19jun1999d,30jun2002d); put a; run; 结果为1107天。将间隔该为年、季度、月、小时, 还可以计算相应的间隔个数。,第七章 数组与矩阵 第一节 数组 一、数组的定义 array数组名(维数)数组元素名列表 (初始值表) 例1:data test ; array price(2,3) c11 c12 c13 c21 c22 c23; run; 例2:data test ; array price(4) openp closep maxp minp (0,0,0,0); run;,例3:data test ;

50、array price(1:4) price1-price4 (0,0,0,0); run; 例4:data test ; array price(*) openp closep maxp minp (0,0,0,0); run; 定义包含字符型变量的数组 例5: data test ; array table(3) $ name code label (a,b,c); run;,定义包含字符型变量指定长度的数组 例6: data test ; array table(3) $ 8 name code label (a,b,c); run;,二、数组的使用 例1:data income; in

51、put income1-income4; array income(*) income1-income4; sum=0; do i=1 to dim(income); sum=sum+income(i); end; put income of this month is sum; cards; 12 12,12 12 ; run; 使用sum函数替代循环语句do结构。 例1:data income; input income1-income4; array income(*) income1-income4; total=sum(of income1-income4); put income

52、of this month is total; cards; 12 12 12 12;run;,例:多维数组的运用举例 data income; input income1-income6; array income(2,3) income1-income6; totala=sum(of income1-income3); put income of this month is totala; totalb=sum(of income4-income6); put income of this month is totalb; cards; 13,13 13 12 12 12 ; run;,第

53、二节 sas/iml模块 一、sas/iml模块的特点 iml是inactive matrix language的缩写。就是交互矩阵的语言的意思。 1、它是一个可编程的语言。 2、操作对象为矩阵。 3、有丰富的内置运算符。 4、运算环境是交互的。 二、 sas/iml模块 iml模块的启动和退出 启动 proc iml; 退出 quit;,三、定义矩阵 sas/iml模块的操作对象是二维矩阵,且具有下列特点: 1、矩阵可以是数值型的,也可以是字符型的。矩阵的数值型元素以双精度格式存储。矩阵的字符型元素必须是相同长度的字符串。 2、访问矩阵要使用它的sas命名,名字长度最长为32个字符。 3、矩

54、阵的维数由行数和列数决定。 4、矩阵中可以含有缺失值,以一个点表示。 四、矩阵的定义 x=1 2 5 6 4 6;,例如:proc iml; x=1 2 5 6 4 6; print x; run; x 1 row 6 cols (numerics) 1 2 3 4 5 6 另外一种定义矩阵的方法: x=1 2,2 5,6 5; 例如: proc iml; x=1 2,2 5,6 5; print x; run;,x 3 row 2 cols (numerics) 1 2 2 5 6 5 对于字符型数据x=abc defg; 输出结果为ABC DEFG 例如:proc iml; x=abc d

55、efg; print x; run; x 1 row 2 cols (numerics) ABC DEFG,如果想输出小写字符可定义为: x=abc defg; 例如:proc iml; x=abc defg ; print x; run; x 1 row 2 cols (numerics) abc defg 另外sas/iml还提供了重复元素的定义方式。重复运算符的使用方法是在元素前加上一个中括号,里面输入希望重复的次数。 例:answer=2 y,2 n; 等价于answer=yy, nn;,例如:proc iml; answer=2 y,2 n ; print answer; run;

56、answer 2 row 2 cols (numerics) y y n n 等价于answer=yy, nn; 例如: proc iml; answer=y y, n n ; print answer; run;,当然也可以用这种方法来定义字符型矩阵。 t=abc1: abc5; t 1 row 5 cols (numerics) abc1 abc2 abc3 abc4 abc5 例如: proc iml; t= abc1 : abc5 ; print t; run; t 1 row 5 cols (numerics) abc1 abc2 abc3 abc4 abc5,还可以通过指标向量的方

57、法来定义矩阵。 r=1:5定义了矩阵为: r 1 row 5 cols (numeric) 1 2 3 4 5 例如: proc iml; r=1:5; print r; run; r 1 row 5 cols (numerics) 1 2 3 4 5,如果希望向量里面的元素值每次增加不是1,而是其他的值。那么可以使用do函数。例如,如果希望定义一个向量,第一个元素值为-1,最后一个元素值为1,每次增加值为0.5,可定义如下 : do (起始值,终止值,增加值)例:r=do(-1,1,0.5); 定义的矩阵为: r 1 row 5 cols (numerics) -1 -0.5 0 0.5 1 例如:proc iml; r=do(-1,1,0.5); print r; run;,例: proc iml; r=do(-1,1,0.5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论