多数据集处理(二):数据集的纵向串接 |
您所在的位置:网站首页 › 从set中取值 › 多数据集处理(二):数据集的纵向串接 |
原标题:多数据集处理(二):数据集的纵向串接 -- SET语句的其他应用 上一篇文章介绍了对多个数据集操作的SET语句。今天,我们将介绍SET语句的其他应用。 在例4.2中,如果要让串接后的新数据集中的8条观测按照Emp_ID的升序排列,该如何操作呢?这时需要引入穿插串接的概念。穿插串接就是使得新数据集的观测按照一定顺序排列的串接方法。 使用BY语句进行穿插串接 基本形式为: BY语句在处理多个数据集时经常使用,为了更好地理解本系列后面的内容,这里需要引入BY变量、BY变量组、BY变量值和BY组合的概念。 BY语句中的变量称为BY变量,一个BY语句中的BY变量可以有多个。 当BY语句中有多个变量时,称这些变量为BY变量组。 BY变量值指的是BY变量的取值。 BY组合指的是具有相同BY变量值的观测的集合。当有多个BY变量时,BY组合就是使得所有BY变量的取值完全相同的观测的集合。 为了便于理解,在本系列后面的阐述中,BY变量既代表一个BY变量,也可以是多个BY变量。 在使用BY语句时,所有输入数据集都必须是按BY变量排过序,或者有基于BY变量建立的索引(在以后的所有代码中,使用BY语句都有这样的要求)。串接完毕后,新数据集中的观测也将按照BY变量排序。 例4.3:对数据集Work.New_Emloyee_Dept和Work.Old_Emplyee_Gen进行穿插串接。 由于work.New_Employee_Dept和work.Old_Employee_Gen都没有按照Emp_ID排序,在对这两个数据集进行穿插串接时,首先必须对其按Emp_ID排序。对数据集进行排序,可以使用前面文章介绍的SORT过程。 示例代码如下: 输出内容如图4.4所示。 图4.4 例4.3打印输出数据集内容 注意: 使用BY语句可以很高效地得到按BY变量排序后的新数据集。如果新数据集的观测数很多,此方式将会节约资源和时间。 使用LENGTH语句 当输入数据集中同名变量的长度不一样时,新数据集中该变量的长度等于SET语句中第一个数据集中对应变量的长度。在对多个数据集进行串接时,最好先行检查字符型变量的长度,避免在读取变量值时造成截断。如有需要,可以在使用SET语句之前,使用LENGTH语句来定义变量的长度。 使用LENGTH语句定义变量长度的基本形式为: 在定义字符型变量的长度时,需在长度前面加上$符号。 例4.4:使用LENGTH语句将数据集work.Employee中Emp_ID的长度定义为15。 示例代码如下: 使用选项RENAME= 在上面的例子中,输入数据集中相同含义的字段正好同名,但是在很多情况下,由于数据来自于不同的部门系统和时期,输入数据集中相同含义的变量往往不具有相同的变量名。例如,在一个数据集中表示员工ID的变量名称叫ID,在另一个数据集中表示员工ID的变量名称叫Emp_ID,在进行数据拼接的时候,如果不做另外的处理,这两个变量将会被SAS认为是两个不同的字段,并分别存储在两个不同的变量下。这时可以使用RENAME=选项将两个数据集中的变量名改成一致的名称,避免出现前面描述的问题。 使用RENAME= 选项的基本形式为: 例4.5:数据集ex.JMP_Staff和ex.RND_Staff中分别包含了两个系统中存储的员工信息,现在公司整合员工信息,欲将两个系统中的员工信息统一管理,并且要求所有员工的记录根据入职年份Entry_Year来排列。 首先,通过前面介绍的PROC CONTENTS来看一看ex.JMP_Staff和ex.RND_Staff中分别都包含有哪些变量及相应的属性,代码如下: 图4.5是部分输出(VARNUM选项使得CONTENTS过程的输出中变量按创建时间排序)。 图4.5 PROC CONTENTS过程的部分输出 两个数据集中包含了相同数量的变量,但是数据集JMP_Staff中表示员工ID的变量为Employee_ID,而RnD_Staff中表示员工ID的变量为Emp_ID,此时可借助RENAME= 选项将两个变量的名称改为一致。示例代码如下: 注意: 上例中,RENAME=选项并没有真正更改原数据集ex.JMP_STAFF中的变量名,在DATA步的编译阶段,系统读入ex.JMP_Staff中变量的描述部分时,将变量Employee_ID更名为了Emp_ID。 本文结束,下一篇文章开始介绍“APPEND过程及与SET语句的比较”。 回复【数据和代码】可以下载《深入解析SAS》一书的数据和代码。 查询往期文章,请回复下列关键字: 【安全】==>【SAS智能平台安全管理】系列文章 【Base基础】==>【Base SAS基础】系列文章 【编程概念】==>【SAS编程基本概念】系列文章 【描述性统计】==>【SAS统计分析系列:描述性统计分析】系列文章 【读外部数据】==>【读取外部数据到SAS数据集】系列文章 【假设检验】==>【参数估计与假设检验】系列文章 【单数据集处理】==>【单数据集处理】系列文章 【方差分析】==>【方差分析】系列文章 小贴士 读者可以从以下链接获取SAS公司提供的免费版环境: SAS大学版(SAS® University Edition)是SAS为在校大学生免费提供的基于虚拟机和网页的SAS环境。回复关键字【大学版】,可以查看详细介绍。 下载路径: https://www.sas.com/en_us/software/university-edition/download-software.html SAS学术版(SAS® OnDemand for Academics)是 SAS 为学术届人士免费提供的、在线的、基于SAS 私有云上的应用服务环境。 用户首先需要注册,然后按照提示信息就可登录。 注册路径: http://odamid.oda.sas.com 本文转自《深入解析SAS — 数据处理、分析优化与商业应用 》 作者:夏坤庄、徐唯、潘红莲、林建伟 如若转载本文,请在文章顶部标注 “本文转自SAS知识 (ID: SASAdvisor),摘自《深入解析SAS — 数据处理、分析优化与商业应用 》” 作者介绍 夏坤庄 《深入解析SAS — 数据处理、分析优化与商业应用》第一作者, SAS软件研究开发(北京)有限公司客户职能部总监。在承担研发工作的同时,夏及其团队负责对SAS非英语市场提供技术支持,并且与在美国及其它地区的团队一起,服务于SAS的SaaS/RaaS业务,同时提供和验证关于SAS产品和技术在应用领域的最佳实践。在加入SAS软件研究开发(北京)有限公司之前,夏就职于SAS中国公司,历任资深咨询顾问、项目经理、首席顾问、咨询经理,拥有丰富的咨询和项目实施经验。在长期的从业经历中,不但为SAS的金融行业客户成功实施了众多深受好评的项目,而且在近年领导实施了非金融行业的多个大数据分析项目。 欢迎大家投稿,一起分享SAS的点滴 投稿邮箱: [email protected]返回搜狐,查看更多 责任编辑: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |