iris数据集_R语言数据分析与挖掘(第一章):数据预处理(3)——数据整理

本文主要介绍了R语言中数据预处理的重要步骤——数据整理,包括数据合并、子集选取和数据转换。重点讲解了merge()函数如何智能合并数据集,以及subset()函数用于选取子集的操作。此外,还提到了transform()、within()以及stack()和unstack()函数在数据转换中的应用。
摘要由CSDN通过智能技术生成

937d4ef94eadb6eb822b545342a7ed17.gif

在介绍了缺失值处理的方法之后,我们可以得到完整的数据集,但在进行数据分析之前,还需要对数据进行整理,下面我们将介绍数据整理的相关知识。

1.数据合并

我们在R语言基础语法教程中介绍了数据合并的一般方法,即利用函数cbind()和rbind()来进行合并,但这只是对数据进行简单的连接,且要求用于合并的数据集有相同的维数,否则R语言将会报错。在处理一些相对复杂的情况时,这两个函数显得不够实用,需要借助其他函数来实现,下面我们介绍更加“智能化”的函数merge(),该函数适用于合并含有共同的行或者列的两个数据集。其函数的基本书写格式为:

> merge(x,y, by = intersect (names(x), names(y)),by.x =by,   by.y= by, all = FALSE,all.x = all,sort=TRUE,   suffixes=c(".x" ,".y"), incomparables = NULL, ....)

参数介绍:

x, y:用子合并的两个数据框或其他数据对象;

by, by.x, by.y: 指定依据哪些行合并数据框,默认值为x、y中列名相同的列;

all, all.x, all.y:逻辑值,指定x和y的行是否全在输出文件中,默认值为FALSE;

Sort:逻辑值,指定参数by中的列是否需要排序,默认值为TRUE;

Sutlives:字符串向量,指定除参数by小中的列外相同列名的后缀;

Incomparables:指定参数by中哪些单元不进行合并,默认值为NULL。

需要注意的是,函数merge()只能对两个数据对象进行合并,而不能同时合并多个数据对象。下面我们通过实例演练进行详细介绍:

> a> b> a  x1 x2A  1  6B  2  7c  3  8D  4  9E  5 10> b  x1 x2 x3A 11 14 17B 12 15 18E 13 16 19> merge(a,b,all=T)  x1 x2 x31  1  6 NA2  2  7 NA3  3  8 NA4  4  9 NA5  5 10 NA6 11 14 177 12 15 188 13 16 19

由于矩阵a和b的行数和列数都不相同,且指定所有数据都要合并,R语言采用列数较多的矩阵b的列名然后再将矩阵合并,用"NA"填补空格位置。

> c> c  x1 x3A  1  5B  2  6D  3  7E  4  8> merge(a,c,all=T)  x1 x2 x31  1  6  52  2  7  63  3  8  74  4  9  85  5 10 NA> merge(a,c)  x1 x2 x31  1  6  52  2  7  63  3  8  74  4  9  8

上述代码中:我们创建一个新的矩阵c,将其与矩阵a合并,当指定所有数据合并时,输出一个5*3的矩阵,其中元素为矩阵a、c按列合并,空格位置用“NA”填补;如果不指定所有数据合并,则去掉含有缺失值的行后输出,

结果为4*3的矩阵。

如果两矩阵中出现相同的行元素,则函数merge还可以输出相同的行:

> d> d  x1  x2A  1   6B  2   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值