2018-10-26
阅读量:
1029
R语言reshape2包
reshape2包是由Hadley Wickham开发的用于数据重构的包,其主要功能函数为melt、cast,实现了长数据和宽数据之间的转换。
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
0
1
关注作者
收藏
评论(0)
发表评论
暂无数据
推荐帖子
0条评论
0条评论
1条评论