多数据集处理(二):数据集的纵向串接

您所在的位置:网站首页 从set中取值 多数据集处理(二):数据集的纵向串接

多数据集处理(二):数据集的纵向串接

#多数据集处理(二):数据集的纵向串接 | 来源: 网络整理| 查看: 265

原标题:多数据集处理(二):数据集的纵向串接 -- 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