1、SAS系统和数据分析建立SAS系统的数据集第一十课 建立SAS系统的数据集(FILE/IMPORT或EXPORT)用SAS/ACCESS访问外部数据库,只是建立了SAS系统访问外部数据库的访问通道,外部数据库并没有真正转换成SAS数据集,也没有新增一个外部数据库文件大小的存储空间,仅仅是创建了.ACCESS和.VIEW文件,且占用了很少的存储空间,例如我们将外部数据库文件移去,SAS系统中对应的那个*.VIEW就不能显示了。而我们使用FILE/IMPORT或EXPORT方法是真正地输入或输出了一个数据库文件,要新增一个与原外部文件大小相当的SAS数据集,且这个数据库文件格式也转换成SAS数据库
2、文件格式。我们这里主要介绍Excel的*.XLS数据库文件与SAS数据集的转换。一、 Excel的XLS文件输入变成SAS的DATA文件Mircrosoft Office套装软件中一员Excel,是一个功能强大的管理和决策工具软件,被大多数用户熟悉和常用。虽然Excel中也为用户提供了大量的统计函数和可调入的统计宏模块程序,但遇到需要大数据量的、多种类型的、复杂的大型统计分析,Excel就会显得力不从心。常常采用将Excel中原始分析数据转入到SAS系统,借助SAS系统的强大的专业的统计分析能力进行分析处理,能使用Excel所不具备的统计模块,能生成独有的专业统计报表和图形。例如我们有一个上证
3、综合指数的Excel文件,文件名为1a0001w.xls,存放的目录为d:sasdatamydir,存放内容是从1990年12月21日开市到2000年1月07日的周K线指数数据,如图10.1所示。图10.1 上证周K线数据的XLS文件将上述的1a0001w.xls文件输入到SAS系统,创建一个名为XLSSAS.DATA的SAS数据集,操作步骤如下:1. 选择File/Import命令,进入选择输入文件类型窗口,在下拉菜单中选择Excel如图10.2所示。鼠标单击输入框右边的向下箭头,弹出下拉菜单,选择Excel 5 or 7 Spreadsheet (*.xls)选项,然后单击Next按钮,进
4、入下一个菜单窗口。图10.2 在SAS输入窗口选择外部文件格式2. 在选择外部文件窗口中,通过Browse按钮找到外部文件或直接键入单击Browse按钮,找到D:SASDATAMYDIR目录,单击文件1a0001w.xls打开。或者在空白的输入框中直接输入路径名和文件名D:SASDATAMYDIR1a0001w.xls。3. 单击Options按钮,可以选择Excel的工作表和区域如图10.3所示。单击Options按钮后,出现了SAS Import:Spreadsheet options电子工作表的选项对话单,要注意,如果对话单中,Worksheet和Range输入框的右旁的两个向下箭头没有
5、出现或输入框中事先就为空白,说明SAS系统没有正确地打开外部文件,常见的错误原因是用户还把这个外部文件打开着。鼠标单击Worksheet输入框右旁向下箭头,打开下拉菜单选择其中一个工作表,Excel文件中只要有数据的工作表都会显示在这个下拉菜单中。Range输入框中可以直接按Excel的区域定义的方法输入,如A1:G464,或鼠标单击右旁向下箭头,选择下拉菜单中的,表示选择整个工作表中的数据。图10.3 选择Excel的工作表和表中区域选择确定后单击OK按钮和Next按钮进入下一个菜单窗口。4. 选择SAS系统的库标记和输入一个自定的数据集名称如图10.4所示。在Libname输入框中选择一个
6、已经存在的库标记STUDY,在MEMBER输入框中通常是输入一个新的成员名称XLSSAS。最后单击Finish按钮,一个由外部Excel文件1a0001w.xls输入到SAS系统的STUDY.XLS.DATA数据集就产生了。图10.4 确定在SAS系统中新生成的数据集名称二、 SAS的DATA文件输出变成Excel的XLS文件当然,SAS系统在数据管理方面也有不足的地方,也常需要把统计分析的结果数据转回到Excel作进一步的管理和决策。因此,能方便地建立SAS与Excel的双向数据通道,使两者更紧密地结合在一起,无疑使两者都如虎添翼。下面我们把刚才新生成的STUDY.XLSSAS.DATA数据
7、集再输出到Excel,产生一个新的SASXLS.XLS文件。文件输出的操作过程和窗口菜单与文件输入都很相似,主要步骤简述如下: 选择File/Export菜单命令 选择源SAS数据集的数据库标记STUDY和成员名XLSSAS 选择目的数据库的类型为Excel 5 or 7 Spreadsheet (*.xls) 输入目的数据库的路径和数据库名为d:sasdatamydirsasxls.xls第一十一课 单击Finish按钮SAS数据集的编辑通常从外部数据源转换得到SAS数据集后,并不是所有的数据集都满足统计数据要求,可立即调用统计过程进行统计分析。需要对数据集进行满足统计数据要求的编辑或生成新
8、的数据集。一、 增加数据集一个新变量SAS系统可通过赋值语句把包含操作符的表达式赋值给数据集所要创建的新变量。SAS的表达式中还可以包含SAS函数,如一些常用的SAS函数见下表:函数分类常用函数功能数学运算函数ABS( )取绝对值SQRT( )求平方根INT( )取整数部分EXP( )计数e的次幂LOG( )求e为底的自然对数SIN( )计算正弦LAGn( )求给定变量滞后为n的值统计计算函数MAX( )求最大值MIN( )求最小值MEAN( )求平均值SUM( )求和DIFn( )求给定变量X的第n阶差STD( )求标准差PROBNORM( )标准正态分布函数日期时间处理函数DATE( )/
9、TODAY()取当日的日期值DAY( )计算某月的那一日HOUR( )计算小时TIME( )取当日的时间YEAR( )取年值字符函数INDEX( )搜寻字符串的位置LEFT( )字符串表达式左对齐SUBSTR( )抽取子字符串TRIM( )移走尾部空格LENGTH( )给出字符变量的长度UPCASE( )转换为大写财政金融函数COMPOUND( )计算复利IRR( )计算内部赢利率NPV( )计算净现值SAVING( )计算定期储蓄的本金和利息例如,有一个学生成绩数据集中的数据来源写在CARDS语句后,但我们还需产生新的变量平均分和总分,数据步的程序如下:Data class2 ;Input
10、id test1-test5 ; average=mean(test1,test2,test3,test4,test5); total=test1+test2+test3+test4+test5;Cards ; 980801 100 100 100 100 100 980802 90 100 90 100 90 980803 81 82 83 84 85Proc print data=class2 ;Run ;在OUTPUT窗口中显示的运行结果见图11.1所示。图11.1 用赋值表达式创建数据集的新变量二、 选择数据集的变量和观测数据库的三种基本操作是选择、投影和连接,如果我们把数据库看成是一
11、张表格,选择和投影操作相当于从一张大的数据库表格中挑选所需的行和列形成一张小的数据库表格。连接操作相当于把两张或两张以上的数据库表格按某种规则合并成一张数据库表格。原始数据库表格可以是外部数据文件(用INFILE语句输入),或在作业流中(用CARDS语句输入),或来自其他SAS数据集(用SET语句输入)。1. 选择变量(即选择列)使用DATA语句的DROP=和KEEP=选项可以控制从原始数据库中读出的变量是否被写入将要创建的数据集。例如,假设我们要从CLASS2数据集中产生只包含ID、AVERAGE和TOTAL变量,而不包含TEST1、TEST2、TEST3、TEST4、TEST5变量的新数据
12、集CLASS3。有两种程序编法都能达到相同的目的,一是使用DATA语句的DROP=选项,表示从原有变量中去掉DROP=中指明的变量;二是使用DATA语句的KEEP=选项,表示从原有变量中只保留KEEP=中指明的变量。程序如下:程序一:Data class3 (drop=test1 test2 test3 test4 test5 ) ;Set class2 ;Proc print data=class3 ;Run;程序二:Data class3 ( keep=id average total ) ;Set class2 ;Proc print data=class3 ;Run ;程序一和程序二的
13、运行结果相同。在OUTPUT窗口中显示的运行结果如图11.2所示。图11.2 对数据集用DROP或KEEP进行变量选择2. 选择观测(即选择行)选择满足条件的记录行来形成新的数据集,可使用DATA步的IF语句,IF语句的作用就像一个过滤网,IF语句中的条件表达式就像过滤网的形状,只允许符合条件表达式的记录行通过,如果条件表达式恒为真,意味着过滤网是空的,让所有的记录行通过。对于不符合条件的记录行不作任何处理,直接回到数据步的顶部再将下一条记录来通过过滤网。如果在条件语句IF中使用了DELETE语句,则可以控制哪些记录行不被写入将要创建的新数据集。在条件表达式中要使用到比较操作符和逻辑操作符,S
14、AS系统的比较操作符如下表所示:操作符符号意义LT大于(Greater Than)EQ=等于(Equal)LE=大于等于(Greater Equal)NE=不等于(Not Equal)IN等于列举中一个SAS系统的逻辑操作符如下表所示:操作符符号意义AND&与OR|或NOT非请注意在条件表达示中使用上面两个表中的操作符或符号是等价的,特别要注意的是在一个复杂的条件表达式中可能同时包含算数运算符(+ - * / *)、比较操作符和逻辑操作符,此时运算的优先次序为括号、算数运算符、比较操作符和逻辑操作符。下面的三个DATA步程序是从同一个数据集CLASS2中,按不同的条件表达式选择记录行形成新的数
15、据集CLASS4,结果相同。程序一:Data class4 ;Set class2 ;if total ge 450 ;Proc print data=class4 ;Run ;程序二:Data class4 ;Set class2 ;if total lt 450 then delete ;Proc print data=class4 ;Run ;程序三:Data class4 ;Set class2 ;if average=80 and 100 in (test1,test2,test3,test4,test5) ;Proc print data=class4 ;Run ;运行结果如图11.3 所示。图11.3 用IF条件语句选择数据集中的观测程序三中的IF语句条件表达式等价于IF average=80 and (100=test1 or 100=test2 or 100=test3 or 100=test4 or 100=test5),由于AND的优先级比OR的高,与条件表达式IF average=80 and 100=test1 or 100=test2 or 100=test3 or 100=test4 or 100=test5是有区别的。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1