reshape包
reshape包是一套重构和整合数据的绝妙的万能工具。
#安装
install.packages("reshape")
大致来说,你首先需要将数据“融合(melt)”,以使每一行都是一个唯一标识符-变量组合。然后将数据“重铸(cast)”为你想要的任何形状。
1. 融合
每个测量变量独占一行,行中带有要唯一确定这个测量所需的标识符变量。
有了融合后的数据,可以使用cast()函数将它重铸为任意形状。
2. 重铸
cast()函数读取已融合的的数据,并使用你提供的公式和一个(可选的)用于整合数据的函数将其重塑。调用格式为:
newdata <- cast(md, formula, FUN)
其中md为已融合的数据,formula描述了想要的最后的结果,而FUN是(可选的)数据整合函数。其接受的公式形如:
rowvar1 + rowvar2 + ... ~ colvar1 + colvar2 + ...
这个公式中,rowvar1 + rowvar2 + ...定义了要划掉的变量集合,以确定各行的内容,而colvar1 + colvar2 + ...则定义了要划掉的,确定各列内容的变量集合。
3. 示例:
ID <- c(1,1,2,2)
Time <- c(1,2,1,2)
X1 <- c(5,3,6,2)
X2 <- c(6,5,1,4)
mydata <- cbind(ID,Time,X1,X2)
mydata <- as.data.frame(mydata)
mydata
3.1 先融合:
md <- melt(mydata, id=c("ID", "Time")
md
3.2.1 执行整合
(a)
cast(md, ID ~ variable, mean)
(b)
cast(md, Time ~ variable, mean)
(c)
cast(md, ID ~ Time, mean)
3.2.2 不执行整合
(a)
cast(md, ID + Time ~ variable)
(b)
cast(md, ID + variable ~ Time)
(c)
cast(md, ID ~ variable + Time)