week4reshape包

来源:互联网 发布:淘宝企业店铺要报税吗 编辑:程序博客网 时间:2024/04/30 12:03

reshape包(转载自r实战)

reshape包是一套重构和整合数据集的绝妙的万能工具。由于它的这种万能特性,可能学
起来会有一点难度。我们将慢慢地梳理整个过程,并使用一个小型数据集作为示例,这样每一步
发生了什么就很清晰了。由于reshape包并未包含在R的标准安装中,在第一次使用它之前需要
使用install.packages(“reshape”)进行安装。
大致说来,你需要首先将数据“融合”(melt),以使每一行都是一个唯一的标识符—变量组
合。然后将数据“重铸”(cast)为你想要的任何形状。在重铸过程中,你可以使用任何函数对数
据进行整合。将使用的数据集如表所示。
这里写图片描述

在这个数据集中,测量measurement是指最后两列中的值(5、6、3、5、6、1、2、4)。每
个测量都能够被标识符变量(在本例中,标识符是指IDTime以及观测属于X1还是X2)唯一地确
定。举例来说,在知道ID为1、Time为1,以及属于变量X1之后,即可确定测量值为第一行中的5。

melt融合

数据集的融合是将它重构为这样一种格式:每个测量变量独占一行,行中带有要唯一确定这
个测量所需的标识符变量。要融合表中的数据,可使用以下代码:

library(reshape)md <- melt(mydata, id=(c("id", "time")))

这里写图片描述

2. cast() 重铸

cast()函数读取已融合的数据,并使用你提供的公式和一个(可选的)用于整合数据的函
数将其重塑。调用格式为:

newdata <- cast(md, formula, FUN)

其中的md为已融合的数据,formula描述了想要的最后结果,而FUN是(可选的)数据整合函数。
其接受的公式.

在这一公式中,rowvar1+ rowvar2+ ...定义了要划掉的变量集合,以确定各行的内容,
colvar1+ colvar2+ ...则定义了要划掉的、确定各列内容的变量集合。参见图5-1中的
示例。

这里写图片描述

reshape包例子

library(reshape2)dstats<-function(x)(c(n=length(x), mean=mean(x), sd=sd(x)))# measure.vars 欲分类计算的变量名# id.vars 变量 dfm<-melt(mtcars, measure.vars=c("mpg", "hp", "wt"),id.vars=c("am", "cyl"))dcast(dfm, am + cyl + variable ~., dstats)
> head(dfm)  am cyl variable value1  1   6      mpg  21.02  1   6      mpg  21.03  1   4      mpg  22.84  0   6      mpg  21.45  0   8      mpg  18.76  0   6      mpg  18.1> cast(dfm, am + cyl + variable ~., dstats)   am cyl variable  n       mean         sd1   0   4      mpg  3  22.900000  1.45258392   0   4       hp  3  84.666667 19.65536403   0   4       wt  3   2.935000  0.40752304   0   6      mpg  4  19.125000  1.63171695   0   6       hp  4 115.250000  9.17877996   0   6       wt  4   3.388750  0.11621647   0   8      mpg 12  15.050000  2.77439598   0   8       hp 12 194.166667 33.35983799   0   8       wt 12   4.104083  0.7683069
0 0
原创粉丝点击