
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
R 语言:数据科学与科研领域的核心工具及优势解析 一、引言 在数据驱动决策的时代,无论是科研人员验证实验假设(如前文中的 T ...
2025-09-08T 检验在假设检验中的应用与实践 一、引言 在科研数据分析、医学实验验证、经济指标对比等领域,常常需要判断 “样本间的差异是 ...
2025-09-08在商业竞争日益激烈的当下,“用数据说话” 已从企业的 “加分项” 变为 “生存必需”。然而,零散的数据分析无法持续为业务赋能 ...
2025-09-08随机森林算法的核心特点:原理、优势与应用解析 在机器学习领域,随机森林(Random Forest)作为集成学习(Ensemble Learning) ...
2025-09-05Excel 区域名定义:从基础到进阶的高效应用指南 在 Excel 数据处理中,频繁引用单元格区域(如A2:A100、B3:D20)不仅容易出错, ...
2025-09-05CDA 数据分析师:以六大分析方法构建数据驱动业务的核心能力 在数据驱动决策成为企业共识的当下,CDA(Certified Data Analyst) ...
2025-09-05SQL 日期截取:从基础方法到业务实战的全维度解析 在数据处理与业务分析中,日期数据是连接 “业务行为” 与 “时间维度” 的核 ...
2025-09-04在卷积神经网络(CNN)的发展历程中,解决 “梯度消失”“特征复用不足”“模型参数冗余” 一直是核心命题。2017 年提出的密集连 ...
2025-09-04CDA 数据分析师:驾驭数据范式,释放数据价值 在数字化转型浪潮席卷全球的当下,数据已成为企业核心生产要素。而 CDA(Certified ...
2025-09-04K-Means 聚类:无监督学习中数据分群的核心算法 在数据分析领域,当我们面对海量无标签数据(如用户行为记录、商品属性数据、图 ...
2025-09-03特征值、特征向量与主成分:数据降维背后的线性代数逻辑 在机器学习、数据分析与信号处理领域,“降维” 是破解高维数据复杂性的 ...
2025-09-03CDA 数据分析师与数据分析:解锁数据价值的关键 在数字经济高速发展的今天,数据已成为企业核心资产与社会发展的重要驱动力。无 ...
2025-09-03解析 loss.backward ():深度学习中梯度汇总与同步的自动触发核心 在深度学习模型训练流程中,loss.backward()是连接 “前向计算 ...
2025-09-02要解答 “画 K-S 图时横轴是等距还是等频” 的问题,需先明确 K-S 图的核心用途(检验样本分布与理论分布的一致性),再结合横轴 ...
2025-09-02CDA 数据分析师:助力企业破解数据需求与数据分析需求难题 在数字化浪潮席卷全球的当下,数据已成为企业核心战略资产。无论是市 ...
2025-09-02Power BI 度量值实战:基于每月收入与税金占比计算累计税金分摊金额 在企业财务分析中,税金分摊是成本核算与利润统计的核心环节 ...
2025-09-01巧用 ALTER TABLE rent ADD INDEX:租房系统数据库性能优化实践 在租房管理系统中,rent表是核心业务表之一,通常存储租赁订单信 ...
2025-09-01CDA 数据分析师:企业数字化转型的核心引擎 —— 从能力落地到价值跃迁 当数字化转型从 “选择题” 变为企业生存的 “必答题”, ...
2025-09-01数据清洗工具全景指南:从入门到进阶的实操路径 在数据驱动决策的链条中,“数据清洗” 是决定后续分析与建模有效性的 “第一道 ...
2025-08-29机器学习中的参数优化:以预测结果为核心的闭环调优路径 在机器学习模型落地中,“参数” 是连接 “数据” 与 “预测结果” 的关 ...
2025-08-29