京公网安备 11010802034615号
经营许可证编号:京B2-20210330
R语言数据集行列互换技巧
现在给大家介绍的数据处理技巧是长转宽,也就相当于Excel中的转置,不过用R语言实现的长转宽还有数据合并的功能,自然比Excel强大多了。
这里给大家介绍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,
+ key="Year",
+ value="sale",
+ sale2014:sale2017
+ )
> mydata1
name address 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
和melt()函数不同,gather()函数需要指定关键字段key,以及关键字段对应的值value,但是gather()函数更加好理解。
二、长转宽——dcast()和spread()
还是用上面的data1数据集,先来看看dcast()函数
[python] view plain copy
#长转宽——dcast
dcast(
data=mydata1,
name+address~Year
#左侧是要保留的字段,右侧是要分割的分类变量,列数等于表达式
#右侧分类变量的类别个数
)
[python] view plain copy
> #长转宽——dcast
> dcast(
+ data=mydata1,
+ name+address~Year
+ #左侧是要保留的字段,右侧是要分割的分类变量,列数等于表达式
+ #右侧分类变量的类别个数
+ )
Using sale as value column: use value.var to override.
name address sale2014 sale2015 sale2016 sale2017
1 store1 普陀区 3000 3020 5150 4450
2 store2 黄浦区 2500 2800 3600 4100
3 store3 徐汇区 2100 3900 2700 4000
4 store4 浦东新区 1000 2000 2500 3200
dcast()函数的使用规则需要琢磨下才能理解,大家好好看看注释部分,再来看看spread()
[python] view plain copy
#长转宽——spread
tidyr::spread(
data=mydata1,
key=Year,
value=sale
)
[python] view plain copy
> #长转宽——spread
> tidyr::spread(
+ data=mydata1,
+ key=Year,
+ value=sale
+ )
name address sale2014 sale2015 sale2016 sale2017
1 store1 普陀区 3000 3020 5150 4450
2 store2 黄浦区 2500 2800 3600 4100
3 store3 徐汇区 2100 3900 2700 4000
4 store4 浦东新区 1000 2000 2500 3200
直接调用tidyr::spread,需要指定关键字段key和对应的值value。
但是从理解上来看,我个人更喜欢tidyr包的函数,使用很清晰,大家可以根据实际情况自行选择,好啦,今天的分享结束,下次再见!
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在MySQL数据库运维与开发实践中,经常出现一种典型现象:数据库实际存储的数据量很小,数据表条数少、文件体积低,但服务器整体 ...
2026-09-11 很多数据分析师能熟练计算均值、标准差,但当被问到“总体和样本有什么区别”“参数和统计量有什么关系”“数据级别的高低如 ...
2026-09-11CDA数据分析师 出品 作者:李诗怡 定义: 将同一时间段内因具备相同属性或共同经历的用户划分为群体,分析其留存与生命周期价值 ...
2026-09-11在零售、商超、餐饮、线下门店等实体商业运营中,客流与销售额是衡量门店经营状态的两大核心指标。销售额是门店经营的最终结果, ...
2026-09-10在数据可视化体系中,柱形图是最基础、应用最广泛的图表类型,其中**累计柱形图(堆积柱状图)**是兼顾整体总量与内部结构的核心 ...
2026-09-10 许多数据分析师精通Excel函数和SQL查询,但当面对一张上万行的销售明细表,要快速回答“哪个地区销量最高”“哪款产品增长最 ...
2026-09-10在Python Pandas数据分析中,DataFrame是承载结构化数据的核心载体,数据清洗、数据修正、条件赋值、字段更新等实操场景,都离不 ...
2026-09-09 很多数据分析师掌握了Excel函数、会写SQL查询,但当被问到“数据从哪里来”“数据加工有哪些步骤”“如何使用分析工具连接数 ...
2026-09-09卡方检验(Chi-Square Test)是统计学中针对分类数据的经典显著性检验方法,核心用于判断两个离散分类变量是否相互独立、数据实 ...
2026-09-09CDA数据分析师 出品 作者:李诗怡 1. 销售漏斗阶段判断 题目:销售漏斗模型中,通过广告、社交媒体等方式触达品牌信息(如浏览品 ...
2026-09-07在Python数据分析中,Pandas库的DataFrame是最核心、最常用的结构化数据表对象,类似于Excel的二维表格,具备规整的行列结构、字 ...
2026-09-07在数据分析、经营复盘、业绩预测与经济统计工作中,平均增速(平均增长率)是衡量数据长期变化趋势、业务发展快慢的核心指标。不 ...
2026-09-07 很多数据分析师精通Excel单元格操作,但当被问到“表结构数据的基本处理单位是什么”“字段和记录的本质区别”“为什么表结 ...
2026-09-07随着大数据技术的快速发展,商业竞争逐步从传统的经验式经营转变为数据驱动的精细化运营。海量的用户行为数据、交易数据、运营数 ...
2026-09-04CDA数据分析师 出品 作者:李诗怡 1. 波士顿矩阵(BCG Matrix) 定义: BCG于1970年提出的业务组合分析工具,以"市场增长率"(纵 ...
2026-09-04 数据分析师八成以上的时间在和数据表格打交道,但许多人拿到Excel后习惯性地先算、先分析,结果回头发现漏了一列关键数据, ...
2026-09-04数据透视表是Excel与Power BI中最核心的数据分析工具,具备快速汇总、维度拆分、动态筛选的能力,可高效完成数据归类与统计展示 ...
2026-09-03在Power BI数据分析可视化场景中,堆积柱状图+折线图是最常用的复合图表组合。堆积柱状图适合展示各细分维度当期数值、结构占比 ...
2026-09-03 很多数据分析师每天与Excel打交道,但当被问到“表格结构数据的基本处理单位是什么”“数据类型误判会引发哪些分析错误”“ ...
2026-09-03CDA数据分析师 出品 作者:李诗怡 一、8个核心数据清洗函数 1. TRIM:一键清除多余空格(最常用) 作用:仅保留文本中"单词/字 ...
2026-09-02