热线电话:13121318867

登录
2018-10-26 阅读量: 1029
R语言reshape2包

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

install.packages(reshape2)
library("reshape2")

宽数据:每一列为一个观测变量,每一行为一组所有观测变量的观测值

>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

长数据:将每一个观测变量的观测值分开存储,侧重对单个变量进行分析

>airquality1 <- melt(airquality)
No id variables; using all as measure variables
>head(airquality1) #variable列用于存放观测变量,value列用于存放观测变量对应的观测值
variable value
1 Ozone 41
2 Ozone 36
3 Ozone 12
4 Ozone 18
5 Ozone NA
6 Ozone 28

melt函数: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

#指定Month和Day为标识变量
>airquality2 <- melt(airquality, id.vars = c('Month', 'Day'))
>head(airquality2)
Month Day variable value
1 5 1 Ozone 41
2 5 2 Ozone 36
3 5 3 Ozone 12
4 5 4 Ozone 18
5 5 5 Ozone NA
6 5 6 Ozone 28

#指定Species为测量变量
>iris1 <- melt(iris, measure.vars = 'Species')
>head(iris1)
Sepal.Length Sepal.Width Petal.Length Petal.Width variable value
1 5.1 3.5 1.4 0.2 Species setosa
2 4.9 3.0 1.4 0.2 Species setosa
3 4.7 3.2 1.3 0.2 Species setosa
4 4.6 3.1 1.5 0.2 Species setosa
5 5.0 3.6 1.4 0.2 Species setosa
6 5.4 3.9 1.7 0.4 Species setosa

cast函数:cast意为“铸造”,将长数据转化为宽数据

cast函数有两种形式:acast:返回向量/矩阵/数组,dcast:返回数据框

dcast(data, formula, fun.aggregate = NULL, …, margins = NULL, subset = NULL, fill = NULL, drop = TRUE, value.var = guess_value(data))

参数:

formula:“铸造”公式,为函数的核心参数,函数根据公式进行“铸造”,公式形式为x_variable + x_2 ~ y_variable + y_2,左边为标识变量,右边为测量变量,类似于melt函数中的id.vars参数和measure.vars参数

fun.aggregate:聚集函数,如mean、median、sum

fill:用于填充缺失值的值

drop:默认为TRUE,是否删除缺失的组合

长数据“铸造”为宽数据,指定“铸造”公式
>head(airquality2)
Month Day variable value
1 5 1 Ozone 41
2 5 2 Ozone 36
3 5 3 Ozone 12
4 5 4 Ozone 18
5 5 5 Ozone NA
6 5 6 Ozone 28
>airquality3 <-dcast(airquality2, Month + Day ~ variable)
>head(airquality3)
Month Day Ozone Solar.R Wind Temp
1 5 1 41 190 7.4 67
2 5 2 36 118 8.0 72
3 5 3 12 149 12.6 74
4 5 4 18 313 11.5 62
5 5 5 NA NA 14.3 56
6 5 6 28 NA 14.9 66
>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
0.0000
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子