系统和数据分析SAS数据集的编辑_第1页
系统和数据分析SAS数据集的编辑_第2页
系统和数据分析SAS数据集的编辑_第3页
系统和数据分析SAS数据集的编辑_第4页
系统和数据分析SAS数据集的编辑_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、第十一课 SAS数据集的编辑通常从外部数据源转换得到SAS数据集后,并不是所有的数据集都满足统计数据要求,可立即调用统计过程进行统计分析。需要对数据集进行满足统计数据要求的编辑或生成新的数据集。一、 增加数据集一个新变量SAS系统可通过赋值语句把包含操作符的表达式赋值给数据集所要创建的新变量。SAS的表达式中还可以包含SAS函数,如一些常用的SAS函数见下表:函数分类常用函数功能数学运算函数ABS( )取绝对值SQRT( )求平方根INT( )取整数部分EXP( )计数e的次幂LOG( )求e为底的自然对数SIN( )计算正弦LAGn( )求给定变量滞后为n的值统计计算函数MAX( )求最大值

2、MIN( )求最小值MEAN( )求平均值SUM( )求和DIFn( )求给定变量X的第n阶差STD( )求标准差PROBNORM( )标准正态分布函数日期时间处理函数DATE( )/TODAY()取当日的日期值DAY( )计算某月的那一日HOUR( )计算小时TIME( )取当日的时间YEAR( )取年值字符函数INDEX( )搜寻字符串的位置LEFT( )字符串表达式左对齐SUBSTR( )抽取子字符串TRIM( )移走尾部空格LENGTH( )给出字符变量的长度UPCASE( )转换为大写财政金融函数COMPOUND( )计算复利IRR( )计算内部赢利率NPV( )计算净现值SAVIN

3、G( )计算定期储蓄的本金和利息例如,有一个学生成绩数据集中的数据来源写在CARDS语句后,但我们还需产生新的变量平均分和总分,数据步的程序如下:Data class2 ;Input 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 ;在OU

4、TPUT窗口中显示的运行结果见图11.1所示。图11.1 用赋值表达式创建数据集的新变量二、 选择数据集的变量和观测数据库的三种基本操作是选择、投影和连接,如果我们把数据库看成是一张表格,选择和投影操作相当于从一张大的数据库表格中挑选所需的行和列形成一张小的数据库表格。连接操作相当于把两张或两张以上的数据库表格按某种规则合并成一张数据库表格。原始数据库表格可以是外部数据文件(用INFILE语句输入),或在作业流中(用CARDS语句输入),或来自其他SAS数据集(用SET语句输入)。1. 选择变量(即选择列)使用DATA语句的DROP=和KEEP=选项可以控制从原始数据库中读出的变量是否被写入将

5、要创建的数据集。例如,假设我们要从CLASS2数据集中产生只包含ID、AVERAGE和TOTAL变量,而不包含TEST1、TEST2、TEST3、TEST4、TEST5变量的新数据集CLASS3。有两种程序编法都能达到相同的目的,一是使用DATA语句的DROP=选项,表示从原有变量中去掉DROP=中指明的变量;二是使用DATA语句的KEEP=选项,表示从原有变量中只保留KEEP=中指明的变量。程序如下:程序一:Data class3 (drop=test1 test2 test3 test4 test5);Setclass2;Proc print data=class3 ;Run;程序二:Da

6、ta class3 (keep=id average total );Setclass2 ;Proc print data=class3 ;Run ;程序一和程序二的运行结果相同。在OUTPUT窗口中显示的运行结果如图11.2所示。图11.2 对数据集用DROP或KEEP进行变量选择2. 选择观测(即选择行)选择满足条件的记录行来形成新的数据集,可使用DATA步的IF语句,IF语句的作用就像一个过滤网,IF语句中的条件表达式就像过滤网的形状,只允许符合条件表达式的记录行通过,如果条件表达式恒为真,意味着过滤网是空的,让所有的记录行通过。对于不符合条件的记录行不作任何处理,直接回到数据步的顶部再

7、将下一条记录来通过过滤网。如果在条件语句IF中使用了DELETE语句,则可以控制哪些记录行不被写入将要创建的新数据集。在条件表达式中要使用到比较操作符和逻辑操作符,SAS系统的比较操作符如下表所示:操作符符号意义LT<小于(Less Than)GT>大于(Greater Than)EQ=等于(Equal)LE<=小于等于(Less Equal)GE>=大于等于(Greater Equal)NE=不等于(Not Equal)IN等于列举中一个SAS系统的逻辑操作符如下表所示:操作符符号意义AND&与OR|或NOT非请注意在条件表达示中使用上面两个表中的操作符或符号

8、是等价的,特别要注意的是在一个复杂的条件表达式中可能同时包含算数运算符(+ - * / *)、比较操作符和逻辑操作符,此时运算的优先次序为括号、算数运算符、比较操作符和逻辑操作符。下面的三个DATA步程序是从同一个数据集CLASS2中,按不同的条件表达式选择记录行形成新的数据集CLASS4,结果相同。程序一:Data class4;Set class2 ;if total ge 450 ;Proc print data=class4 ;Run ;程序二:Data class4;Set class2 ;iftotal lt 450 then delete;Proc printdata=class

9、4 ;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 avera

10、ge>=80 and 100=test1 or 100=test2 or 100=test3 or 100=test4 or 100=test5是有区别的。拼接和合并数据集数据集的连接是把两个或两个以上的数据集的观测连接成一个新的数据集。连接的方式有两种:拼接和合并。在SAS数据步中用SET语句可以拼接数据集,而用MERGE语句可以合并数据集。例如,我们有两个数据集A和B,要拼接和合并成新的数据集C,两种不同方法的程序和结果见示意图12.4 所示。图12.4 数据集的两种连接方式:拼接和合并一、 数据集的拼接数据集的拼接可分成三种主要的拼接情况:1. 相同变量的数据集拼接这是最简单的情况

11、,在这种情况下,新生成的数据集就含有这些相同的变量,观测的数目是所有这些数据集的观测总和。例如,数据集A和B都含有两个相同的变量COMMOM和X,且都有三条观测,如图12.5 所示。图12.5 含有相同的变量COMMOM和X的两个数据集用下面程序生成新数据集C有两个相同的变量COMMOM和X,6条观测。DataA;Inputcommon x ;Cards ;9801 19802 298033DataB ;Inputcommon x ;Cards ;9801 498025 98036Data C ;SetA B ;Proc printdata=C;Run;拼接生成的新数据集C的结果如图12.6所

12、示。图12.6 相同变量的数据集拼接结果2. 不相同变量的数据集拼接如果两个数据集A和B含有的变量不完全相同,如上例中数据集B含有的不是COMMON和X变量而是COMMON和Y变量,如图12.7所示。用SET语句拼接A和B数据集后,新生成的数据集C就含有三个变量COMMON、X和Y,观测的数目仍然是所有这些数据集的观测总和,但原数据集中没有的变量在拼接后新数据集中为缺失值。图12.7 含有不相同的变量X和Y的两个数据集生成新数据集C的程序如下:Data C;Set A B ;Proc printdata=C ;Run;拼接生成的新数据集C的结果如图12.8所示。图12.8 不相同变量的数据集拼

13、接结果3. 按关键字排序后拼接数据集如果要求新生成的数据集C按共同的关键字例如COMMON排序观测,那么预先要数据集A和B也已按COMMON关键字排序好,可通过排序过程PROC SORT 和BY指明关键字。生成新数据集C的程序如下:Proc sortdata= A;ByCommon ;Proc sortdata= B ;ByCommon ;DataC;Set A B ;ByCommon ;Proc print data=C ;Run;拼接生成的新数据集C的结果如图12.9所示。图12.9 按关键字排序后拼接的数据集结果无论哪一种拼接形式,用SET语句拼接生成的新数据集的观测总数为原各输入数据集

14、观测数之和。二、 数据集的合并数据集的合并是通过使用MERGE语句把两个或两个以上数据集中的两条观测或两条以上的观测合并为新生数据集中的一条观测。数据集的合并可分成两种主要的合并情况:l 一对一合并(不带BY语句)l 匹配合并(带有BY语句)1. 一对一合并(不带BY语句)把一个数据集中的第一条观测同另外一个数据集中第一条观测合并,第二条观测同另外一个数据集中第二条观测合并,以此类推。新生成的数据集中的观测总数为这些数据集中观测个数的最大值。如果相对应的某个数据集已没有观测,则相应的变量值为缺省值。如果在几个数据集中有共同的变量,则在合并后新生成的数据集中只有一个变量,其值为列在MERGE语句

15、中最后一个含有该变量的数据集中的观测值。例如,我们有两个数据集A和B,如图12.10所示。图12.10 含有不相同的变量和相同变量不同值的两个数据集生成新数据集C的程序如下:Data C ;MergeA B;Proc printdata=C ;Run;合并的新数据集C的结果如图12.11所示。图12.11 一对一合并(不带BY语句)后的结果2. 匹配合并(带有BY语句)如果想把两个或两个以上的数据集按照相同的关键字值合并,则在MERGE语句后面要用BY跟关键字语句。且每一个数据集必须预先按关键字排序好。如果两个数据集中观测的关键字值不匹配,输出所有这些观测,相应的新增变量的值为缺省值。如果两个数据集中观测的关键字值是多对多匹配,要注意新生成的数据集中相同关键字值的观测数为各数据集中这个关键字值的观测数的最大值,相同关键字值的观测按顺序一对一合并,无论哪一个数据集中这个相同关键字值的观测没有了,都取这个相同关键字值的最后一条观测继续合并。例如,我们有一个订单数据集ORDERS和一个产品数据集PRODUCTS,如图

温馨提示

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

评论

0/150

提交评论