打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
R:reshape包的融合函数melt和重铸函数cast


reshape包:重构和整合数据集的绝妙的万能工具;install.packages("reshape")

①变量重命名函数rename:rename(dataframe, c(oldname="newname", oldname="newname",…))
举例:w <- rename(w, c(mpg = "Miles/(US) gallon",cyl = "Number of Cylinders"))

②数据融合函数melt()和重铸函数cast():类似数据透视表的功能,多维数据结构转一维数据结构,一维数据结构转多维数据结构
>( mydata<-data.frame(ID=c(1,1,2,2),Time=c(1,2,1,2),X1=c(5,3,6,2),X2=c(6,5,1,4)))
  ID Time X1 X2
1  1    1  5  6
2  1    2  3  5
3  2    1  6  1
4  2    2  2  4
> #标识符ID、Time、X1|X2能唯一的确定第四个值,类似二维结构转一维的结构
> library(reshape)
> #融合
> md<-melt(mydata,id=c("ID","Time"))
  ID Time variable value
1  1    1       X1     5
2  1    2       X1     3
3  2    1       X1     6
4  2    2       X1     2
5  1    1       X2     6
6  1    2       X2     5
7  2    1       X2     1
8  2    2       X2     4
> #重铸cast(md,formula,FUN),其中md为已融合的数据,formula描述了想要的最后结果,而FUN是数据整合函数
> #执行整合,类似excel的数据透视表
> cast(md,ID~variable,mean)
  ID X1  X2
1  1  4 5.5
2  2  4 2.5
> cast(md,Time~variable,mean)
  Time  X1  X2
1    1 5.5 3.5
2    2 2.5 4.5
> cast(md,ID~Time,mean)
  ID   1 2
1  1 5.5 4
2  2 3.5 3
> #不执行整合
> cast(md,ID+Time~variable)
  ID Time X1 X2
1  1    1  5  6
2  1    2  3  5
3  2    1  6  1
4  2    2  2  4
> cast(md,ID+variable~Time)
  ID variable 1 2
1  1       X1 5 3
2  1       X2 6 5
3  2       X1 6 2
4  2       X2 1 4
> cast(md,ID~variable+Time)
  ID X1_1 X1_2 X2_1 X2_2
1  1    5    3    6    5

2  2    6    2    1    4


###reshape包的融合函数melt和重铸函数cast

names<-LETTERS[1:8]

lv<-c(10,10,30,30,40,40,50,60)

type<-c(1,2,2,1,3,3,1,2)

vip<-c(1,0,0,1,0,1,1,1)

amount<-c(15,35,75,90,200,150,400,350)

(mydata<-data.frame(names,lv,type,vip,amount))

#融合的过程即列转行的思想,多维转一维的思想

#以type&vip两列进行数据的融合,其他列指标全部融入variable列,其值则在value列中

library(reshape)

(melt.mydata<-melt(mydata[,2:5],id=c("type","vip")))


#重铸cast(data,formula=...~variable,fun=NULL)

#data参数为已经融合好的data.frame

#formula参数为最后重铸数据形式的公式:rowvar1+rowvar2+...~colvar1+colvar2+...

#fun参数为以某个函数进行最后的数据统计,这个参数不填写,默认为统计

fun<-function(x){c(mean=mean(x),sum=sum(x))}#创建具有两个统计数值的函数

cast(melt.mydata,type~variable)#不设置函数参数默认为计数

cast(melt.mydata,type~variable,fun)#以type变量作为行标识,以variable变量组合作为列变量

cast(melt.mydata,type+vip~variable,fun)#行标识加多vip

cast(melt.mydata,type~variable|vip,fun)#这种formula形式可以把vip维度进行分表展现


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
如何使用reshape包进行数据汇总
R语言笔记丨数据的合并、拆分、整合
reshape2 使用
R语言进阶
reshape2介绍
R语言长数据和短数据相互转换
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服