R语言数据集行列互换技巧
现在给大家介绍的数据处理技巧是长转宽,也就相当于Excel中的转置,不过用R语言实现的长转宽还有数据合并的功能,自然比Excel强大多了。
http://www.cda.cn/uploadfile/image/20180624/20180624064644_80795.png
这里给大家介绍4个函数,其中melt()、dcast()来自reshape2包,gather()、spread()来自tidyr包
一、宽转长——melt()、gather()
[python] view plain copy
mydata<-data.frame(
name=c("store1","store2","store3","store4"),
address=c("普陀区","黄浦区","徐汇区","浦东新区"),
sale2014=c(3000,2500,2100,1000),
sale2015=c(3020,2800,3900,2000),
sale2016=c(5150,3600,2700,2500),
sale2017=c(4450,4100,4000,3200)
)
#宽转长——melt
mydata1<-melt(
mydata,
id.vars=c("address","name"),#要保留的主字段
variable.name = "Year",#转换后的分类字段名称(维度)
value.name = "Sale" #转换后的度量值名称
)
输出结果
[python] view plain copy
> mydata1<-melt(
mydata,
id.vars=c("address","name"),#要保留的主字段
variable.name =
"Year",#转换后的分类字段名称(维度)
value.name = "Sale" #转换后的度量值名称
)
> mydata1
address
name
Year Sale
1 普陀区 store1
sale2014 3000
2 黄浦区 store2
sale2014 2500
3 徐汇区 store3
sale2014 2100
4 浦东新区 store4 sale2014 1000
5 普陀区 store1
sale2015 3020
6 黄浦区 store2
sale2015 2800
7 徐汇区 store3
sale2015 3900
8 浦东新区 store4 sale2015 2000
9 普陀区 store1
sale2016 5150
10 黄浦区 store2 sale2016 3600
11 徐汇区 store3 sale2016 2700
12 浦东新区
store4 sale2016 2500
13 普陀区 store1 sale2017 4450
14 黄浦区 store2 sale2017 4100
15 徐汇区 store3 sale2017 4000
16 浦东新区
store4 sale2017 3200
再来看看gather()函数怎么用
[python] view plain copy
> #宽转长——gather
> mydata1<-tidyr::gather(
data=mydata,