第三章 SAS数据管理.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * data scorem scoref; set score; select(sex); when(男) output scorem; when(女) output scoref; otherwise put sex= 有错; end; drop sex; run; proc print data=scorem;run; proc print data=scoref;run; 注意:在DATA语句中,我们指定了两个数据集名,这表示要生成两个数据集。程序中用SET语句引入了一个数据集,这个数据集的观测如何分配到两个结果数据集中呢?关键在于OUTPUT语句。OUTPUT语句是一个可执行语句,它使得当前观测被写到语句指定的数据集中。这样,我们根据SELECT的结果把不同性别分别放到了两个不同数据集中。 OUTPUT语句还可以用来强行写入数据集而不必象我们在数据步流程图中说明的那样等到数据步最后一个语句完成。数据步中有了OUTPUT语句后数据步流程中不再有自动写入观测的操作,而只能由OUTPUT语句指定输出。不指定数据集名的OUTPUT语句输出到第一个结果数据集。比如下面的程序生成一个包含1到10的及其平方的有10个观测的数据集: data test; do i=1 to 10; j=i*i; output; end; run; proc print;run; 如果删去上面的OUTPUT语句则结果数据集中只有i=11,j=100的一个观测。 上一页 下一页 返回本节首页 (四)数据集的纵向合并 几个结构相同的数据集可以上下地连接到一起。比如,我们有四个班的学生情况的数据集Class1-Class4,每个数据集包含一个班学生的学号、姓名、性别信息,我们希望把这些数据集合并为一个大数据集,可以用如下代码: data classes; set class1 class2 class3 class4; run; 可见,要把若干个结构相同的数据集合并为一个数据集,只要在DATA语句中指定要生成的大数据集的名字,然后在数据步中使用SET语句并在SET语句中依次列出各小数据集。 上一页 下一页 返回本节首页 有时我们需要在合并数据集时加入一个变量来指示每一个观测原来来自哪一个小数据集,这可以在SET语句的每一个数据集名后面加一个括号,里面写上in=变量名,变量名所给的变量取1表示观测来自此数据集,取0表示观测非来自此数据集。例如,在前面的例子中我们把score 数据集按男、女拆分成了scorem和scoref两个数据集并抛弃了性别变量,就可以用如下程序连接两个数据集并恢复性别信息: data new; set scorem(in=male) scoref(in=female); if male=1 then sex=男; if female=1 then sex=女; run; 在数据步中,如果观测来自scorem,则变量male值为1,如果观测来自scoref则变量female 值为1,可以使用这两个变量的值定义新变量sex。用数据集选项的in=指定的变量不能直接进入结果数据集而只能用于数据步程序中。 上一页 下一页 返回本节首页 (五)数据集的横向合并 两个(或多个)数据集如果包含了同样的一些观测的不同属性(变量),比如,数据集scorexs包含学生的姓名、性别,数据集scoresx包含学生的数学成绩,数据集scoreyw包含学生的语文成绩,数据集scoreyy包含学生的英语成绩且各数据集的观测是按顺序一一对应的,就可以用如下带有MERGE语句的数据步把它们左右横向合并到一个数据集NEW: data new; merge scorexs scoreyw scoresx; run; 上一页 下一页 返回本节首页 横向合并一般应该采用按关键字合并的办法,即先把每个数据集按照相同的、能唯一区分各观测的一个(或几个)变量排序,然后用BY语句和MERGE语句联合使用,这样即使原来观测顺序不一致也可以保证横向合并的结果没有错。下例先把score数据集横向拆分为包含姓名、性别的数据集scorexs和包含姓名、数学成绩、语文成绩和英语成绩的数据集scoresyy ,然后按关键字横向合并: 上一页 下一页 返回本节首页 data scorexs; set score; keep name sex; run; data scoresyy;

文档评论(0)

明若晓溪 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档