
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
数据清洗是 “数据价值挖掘的前置关卡”—— 其核心目标是 “去除噪声、修正错误、规范格式”,但前提是不破坏数据的真实业务含 ...
2025-10-17在数据汇总分析中,透视表凭借灵活的字段重组能力成为核心工具,但原始透视表仅能呈现数值结果,缺乏对数据背景、异常原因或业务 ...
2025-10-17在企业管理中,“凭经验定策略” 的传统模式正逐渐失效 —— 金融机构靠 “研究员主观判断” 选股可能错失收益,电商靠 “运营拍 ...
2025-10-17在数据库日常操作中,INSERT INTO SELECT是实现 “批量数据迁移” 的核心 SQL 语句 —— 它能直接将一个表(或查询结果集)的数 ...
2025-10-16在机器学习建模中,“参数” 是决定模型效果的关键变量 —— 无论是线性回归的系数、随机森林的树深度,还是神经网络的权重,这 ...
2025-10-16在数字化浪潮中,“数据” 已从 “辅助决策的工具” 升级为 “驱动业务的核心资产”—— 电商平台靠用户行为数据优化推荐算法, ...
2025-10-16在大模型从实验室走向生产环境的过程中,“稳定性” 是决定其能否实用的关键 —— 一个在单轮测试中表现优异的模型,若在高并发 ...
2025-10-15在机器学习入门领域,“鸢尾花数据集(Iris Dataset)” 是理解 “特征值” 与 “目标值” 的最佳案例 —— 它结构清晰、维度适 ...
2025-10-15在数据驱动的业务场景中,零散的指标(如 “GMV”“复购率”)就像 “散落的零件”,无法支撑系统性决策;而科学的指标体系,则 ...
2025-10-15在神经网络模型设计中,“隐藏层层数” 是决定模型能力与效率的核心参数之一 —— 层数过少,模型可能 “欠拟合”(无法捕捉数据 ...
2025-10-14在数字化浪潮中,数据分析师已成为企业 “从数据中挖掘价值” 的核心角色 —— 他们既要能从海量数据中提取有效信息,又要能将分 ...
2025-10-14在企业数据驱动的实践中,“指标混乱” 是最常见的痛点:运营部门说 “复购率 15%”,产品部门说 “复购率 8%”,实则是两者对 ...
2025-10-14在手游行业,“次日留存率” 是衡量一款游戏生死的 “第一道关卡”—— 它不仅反映了玩家对游戏的初始接受度,更直接决定了后续 ...
2025-10-13分库分表,为何而生? 在信息技术发展的早期阶段,数据量相对较小,业务逻辑也较为简单,单库单表的数据库架构就能够满足大多数 ...
2025-10-13在企业数字化转型过程中,“数据孤岛” 是普遍面临的痛点:用户数据散落在 APP 日志、注册系统、客服记录中,订单数据分散在交易 ...
2025-10-13在数字化时代,用户的每一次行为 —— 从电商平台的 “浏览→加购→购买”,到视频 APP 的 “打开→搜索→观看→收藏”,再到银 ...
2025-10-11在机器学习建模流程中,“特征重要性分析” 是连接 “数据” 与 “业务” 的关键桥梁 —— 它不仅能帮我们筛选冗余特征、提升模 ...
2025-10-11在企业的数据体系中,未经分类的数据如同 “杂乱无章的仓库”—— 用户行为日志、订单记录、商品信息混杂存储,CDA(Certified D ...
2025-10-11在 SQL Server 数据库操作中,“数据类型转换” 是高频需求 —— 无论是将字符串格式的日期转为datetime用于筛选,还是将数值转 ...
2025-10-10在科研攻关、工业优化、产品开发中,正交试验(Orthogonal Experiment)因 “用少量试验覆盖多因素多水平组合” 的高效性,成为 ...
2025-10-10