登录
首页精彩阅读R实现类似EXCEL中数据的透视功能:数据的行列转换
R实现类似EXCEL中数据的透视功能:数据的行列转换
2018-06-28
收藏

R实现类似EXCEL中数据的透视功能:数据的行列转换

先介绍下融合和重铸能实现什么样的功能:
例子:想把表1—->>转换成为表2
表1:

表2:

R实现数据的透视功能,使用reshape2包中的melt()函数和dcast()函数。在《R语言实战》这本书中有着详细的介绍。我在这里引用了其中的一些内容。
首先是融合函数,融合顾名思义就是把原先的数据进行融化合并,具体melt()函数会融合成什么样的形式呢?
Library(reshape2)
Md=melt(mydata,id=c(“ID”,”Time”)
其中的参数id是用来唯一的确定观察值的,就行是sql中的主键一样。
其余没有纳入id的特征/属性都会被R默认为归为variable这个新生成的特征/属性中。最后一列就是对应的value。
这就是melt函数把原先的数据表融合后的形式。
把数据融合好之后,就可以进行数据的重铸了。重铸的函数式dcast()函数,d的含义在这里是dataframe的含义。
重铸成什么样式呢?
Newdata=dcast(md,formulate,fun.aggregate,fill=value)
其中formulate的形式如下:
Rowvar1+rowvr2+….=colvar1+colvar2+colvar3+…;公式的左边变量从melt中划出来用来作为重铸表的行变量,右边是确定重铸表的列变量,未在公式中的变量是当做值变量了。
Fun.aggrate函数是可选的数据整合函数,作用在重铸表的数值上面。
Fill=value ;其中fill参数是用来指定重铸后的表中缺失值使用什么数值来代替。

上面的例子的直接使用重铸就可以实现:
library(reshape2)
data <- read.csv(file = ” “,stringsAsFactors = F)
newdata <-dcast(data,用户~手机品牌)

在这里介绍一下管道函数我感觉是非常好用的在R中。因为管道函数的出现使得R中避免生成过多的变量,节省内存不说还能使得代码显得很简洁且容易理解。第二是能够避免使用过多的括号,生成复杂的函数套函数的形式。
%>%

数据分析咨询请扫描二维码

客服在线
立即咨询