![2d47925971663ef6dd596e91d8d8a9c8.png](https://i-blog.csdnimg.cn/blog_migrate/1072240c0d16f78efaae21978e95c5bd.jpeg)
我们继续来总结一下R语言数据处理的第二部分——维度处理。在R语言中,常见的多维数据的存储形式有矩阵、数据框、列表和数组等,其中向量是特殊的矩阵,矩阵是特殊的数据框,数据框又是特殊的数组。对于不同的数据形式,有对应的不同方法处理,下面会分别介绍apply类函数、dplyr拓展包、reshape2包和tidyr包中的相关函数及其运用情况。
一、apply类函数
1.apply
若想对一个数组的行或者列按指定函数去计算的话,可以使用apply(x,margin,Fun,....),其中,x为一个数据,margin可取1(按行计算)或者2(按列计算),Fun是一个函数名,表示对数据的行或列而使用的函数。下面用简单的例子说明:
![39fd08e3ec17ab60a51dbe609168d0b7.png](https://i-blog.csdnimg.cn/blog_migrate/9141dbc6e5d9af71c942784f0304ea73.png)
2.tapply
但大多数的时候,我们不会遇到这么简单的计算要求,现实更多的是分类汇总的思想。映射到R语言就是因子的概念。比如R语言中自带的iris数据集,其中的一个变量Species就是因子,因子简单理解就是分类变量,也就是我们分类汇总时参考的维度。如果想计算三种不同类型花
![3991e0211483dc66df38b9ae1aaacb7e.png](https://i-blog.csdnimg.cn/blog_migrate/5bfb3d6d2693effa53d31c979c4c1ecf.png)
瓣长度的平均值,此时就需要用到tapply(x,index,Fun,...,simplify =T)。x为数组,index就是我们需要分类汇总参考的元素,Fun仍然是函数,simplify为T时,输出结果为数组,若为F时结果以list形式输出。下面看一下计算过程:
![caa3df1a518b75d60ee551d522cbef70.png](https://i-blog.csdnimg.cn/blog_migrate/2d7054800d30af53de99402b2b489622.png)
3. lapply及其变形
(1)当我们所处理的数据不是数据的