R语言reshape2包-官方文档学习

R语言reshape2包-官方文档学习


简介

reshape2包是由Hadley Wickham开发的用于数据重构的包,其主要功能函数为meltcast,实现了长数据和宽数据之间的转换,包中还包含其它函数和数据集

使用得当,reshape2包是数据处理的利器


核心函数

长数据与宽数据

在学习如何使用核心函数melt和cast之前,我们先来了解下什么是长数据宽数据

一般我们收集到的数据集会呈现为宽数据格式,这里以R自带的数据集airquality为例,介绍长数据和宽数据

宽数据:
> head(airquality)
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6

宽数据是我们常见的数据集格式,因为这种格式符合数据收集的习惯和标准,数据集的每一列为一个观测变量,每一行为一组所有观测变量的观测值

个人理解:宽数据格式看重的是一次观测的各个变量相对应的观测值,所以各个变量是重点,而变量数目一般会比观测数多,这样就显得数据集较宽,故称为宽数据

长数据:
> data1 <- melt(airquality)
No id variables; using all as measure variables
> head(data1)
  variable value
1    Ozone    41
2    Ozone    36
3    Ozone    12
4    Ozone    18
5    Ozone    NA
6    Ozone    28

以上是运用melt函数得到的长数据,melt用法在下文详述,让我们先来观察下长数据的形式

长数据有两个特殊的列:variablevalue,variable列用于存放观测变量,value列用于存放观测变量对应的观测值

个人理解:长数据格式用其特有的variable列和value列将观测结果细分,这在我们对单个变量进行分析而不是对所有变量进行分析时会简便得多,因其将每一个观测变量的观测值分开存储,造成variable列和value列较长,以致整个数据集显得较长,故称为长数据

melt函数

Convert an object into a molten data frame.

返回一个数据框

对不同的数据对象,melt函数有不同的使用方法:

  • 针对数组的melt.array
  • 针对数据框的melt.data.frame
  • 针对向量的melt.default
  • 针对列表的melt.list**

个人理解:melt意为“融化”,将宽数据转化为长数据,宽数据是一次观测记录了所有观测变量的观测值,melt的作用就是根据观测变量“融化”这些观测值,将观测值分开

melt.array

Melt an array.

其实可以处理的对象包括array、table和matrix

用法

melt(data, varnames = names(dimnames(data)), …, na.rm = FALSE, as.is = FALSE, value.name = “value”)

参数

  • varnames:用于指定“融化”后形成的数据框的变量名
  • na.rm:默认为FALSE,用于移除缺失值
  • as.is:默认为FALSE,为FALSE时,函数会调用type.convert方法将维度名称转化,为TRUE时,维度名称仍会作为字符串类型

示例

> a <- array(c(1:23, NA), c(2,3,4))
> melt(a, varnames = c('X', 'Y', 'Z'))
   X Y Z value
1  1 1 1     1
2  2 1 1     2
3  1 2 1     3
4  2 2 1     4
5  1 3 1     5
6  2 3 1     6
7  1 1 2     7
8  2 1 2     8
9  1 2 2     9
10 2 2 2    10
11 1 3 2    11
12 2 3 2    12
13 1 1 3    13
14 2 1 3    14
15 1 2 3    15
16 2 2 3    16
17 1 3 3    17
18 2 3 3    18
19 1 1 4    19
20 2 1 4    20
21 1 2 4    21
22 2 2 4    22
23 1 3 4    23
24 2 3 4    NA
melt.data.frame

Melt a data frame into form suitable for easy casting.

我们主要使用的melt方法即这种处理数据框的方法

用法

melt(data, id.vars, measure.vars, variable.name = “variable”, …, na.rm = FALSE, value.name = “value”, factorsAsStrings = TRUE)

参数

  • id.vars:用于指定标识变量,根据标识标量对其它变量进行“融化”,标识变量本身不进行“融化”
  • measure.vars:用于指定测量变量,对测量变量进行“融化”,其它变量不进行“融化”
  • 若只指定了id.vars和measure.vars中的一项,则把指定之外的变量作为另一项
  • 若两者都未指定,则把因子和字符串类型的变量作为id.vars,其余变量作为measure.vars

示例

> data2 <- melt(airquality)
No id variables; using all as measure variables
> head(data2)
  variable value
1    Ozone    41
2    Ozone    36
3    Ozone    12
4    Ozone    18
5    Ozone    NA
6    Ozone    28
# 指定Month和Day为标识变量
> data3 <- melt(airquality, id.vars = c('Month', 'Day'))
> head(data3)
  Month Day variable value
1     5   1    Ozon
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值