尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
JHU R 数据可视化笔记(四)
通过向fct_reorder函数提供我们想要重新排序的向量以及我们想要用来对因子水平进行排序的数据中的另一个向量我们可以轻松地按照排序向量值的升序获得图表上所需的水平顺序。如果我们想按降序进行也可以轻松实现。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/442ccb0ea03348dc0eed17e31d51f8f4_4.png总结与工具forcats包含许多方便的函数可以快速以这种方式重新排序因子。因此你应该花几分钟时间进一步熟悉这些函数以备在你自己数据中需要使用它们。请记住这个技巧在你未来的项目中处理分类数据时它会非常有用。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/442ccb0ea03348dc0eed17e31d51f8f4_6.png在本节课中我们一起学习了因子的概念、其默认顺序的问题以及如何使用forcats包中的fct_relevel和fct_reorder函数来手动重排因子水平从而在数据可视化中获得正确的分类顺序。掌握因子是控制图表中分类变量显示顺序的关键。067连接和透视 https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_0.pnghttps://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_2.png在本节课中我们将学习两个重要的数据整理技能如何将数据从“宽格式”转换为“长格式”即数据透视以及如何将来自不同来源的数据表合并即连接。掌握这些技能对于整合和准备项目数据至关重要。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_4.pnghttps://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_6.pnghttps://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_7.png上一节我们介绍了处理字符串、日期和分类数据的基本工具。本节中我们来看看如何重塑和合并数据表。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_9.png首先有一个小知识点需要提及。在R中你可以为Tibble或数据框创建包含空格的列标题。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_10.pnghttps://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_12.png# 使用反引号创建包含空格的列名Column Name With Spaces-c(1,2,3)https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_14.png通常不建议在数据处理阶段这样做除非是在为图表制作图例或坐标轴标题时需要确保格式美观。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_16.png如果你导入的数据本身列名就包含空格那么在调用这些列时也需要用反引号将列名括起来。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_18.pnghttps://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_19.pnghttps://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_21.png理解了列名的处理方式后现在我们来回顾将数据从宽格式转换为长格式的概念。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_23.pnghttps://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_24.png在Tidyverse中我们更倾向于使用长格式数据即每一行代表一个单一的观测值。但你经常会发现现实世界中的数据是宽格式的即每一行可能是一个案例但该案例有多个观测值分布在不同的列中。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_26.pnghttps://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_27.png例如下面这个简单的表格就是宽格式。每个单元或案例在time1、time2和time3有三个观测值因此观测值在表格中是横向排列的。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_29.png| case | time1 | time2 | time3 ||------|-------|-------|-------|| A | 10 | 12 | 15 || B | 8 | 9 | 11 |这不是在Tidyverse中处理数据的好方式因此我们需要能够将这种数据透视成长格式。我们使用pivot_longer函数来实现。以下是使用pivot_longer的步骤首先将我们想要透视的数据传递给函数。然后选择我们想要进行透视的列。接着为包含原列名的新列指定一个名称。最后为存放被透视数值的新列指定一个名称。如果这听起来不太直观没关系先运行函数观察输出结果你就能逐渐理解其原理。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_31.pnglibrary(tidyr)wide_data-tibble(casec(A,B),time1c(10,8),time2c(12,9),time3c(15,11))long_data-pivot_longer(wide_data,colsc(time1,time2,time3),# 选择要透视的列names_totime_point,# 新列存放原列名time1, time2...values_tomeasurement)# 新列存放对应的数值https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_33.png运行函数后你会看到之前的宽格式数据现在变成了长格式。这相当于进行了部分转置。理解这种差异非常重要因为它可能与你习惯的数据思维方式不同并且对于在Tidyverse中工作至关重要。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_35.png如果出于某些原因例如格式化表格你需要将数据从长格式转回宽格式可以使用pivot_longer的逆函数pivot_wider。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_37.pnghttps://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_39.png# 将长格式数据转回宽格式back_to_wide-pivot_wider(long_data,names_fromtime_point,# 从哪一列获取新列名values_frommeasurement)# 从哪一列获取数值https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_41.png建议你在两种格式之间来回转换几次观察单元格是如何从宽格式移动到长格式并返回的从而更好地理解这个函数的工作原理。刚开始使用时可能不太直观但多加练习就会熟悉。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_42.pnghttps://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/jhu-r-dtviz/img/47065c9f4bdc77f52c06335c5598d2b5_44.png学会了如何重塑单个表格的形状后接下来我们看看如何合并来自不同表格的数据。你的项目数据很可能来自多个电子表格、CSV文件或其他类型的文件你需要将它们合并成一个完整的大表。假设你有一些关于世界多个城市的数据但它们分散在不同的表格中。表格A包含纽约、伦敦、堪培拉和内罗毕的变量X数据。表格B包含纽约、伦敦、堪培拉和雅加达的变量Y数据。将纽约、伦敦和堪培拉这两个变量的数据合并到一个表格中会非常方便。我们可以通过“连接”操作来实现。连接的工作原理是在不同的表中查找“键值”并基于这个键值将表拼接起来。键值本质上是不同表中共有的列。例如这里的共有列是“城市”。我们可以基于该键值列使用连接来合并数据。主要有四种类型的连接左连接、右连接、内连接和全连接。以下是四种连接的说明左连接保留连接函数中第一个表的所有行并尽可能匹配第二个表中的数据。结果合并表中将包含第一个表的所有行但如果第二个表中没有某个键值的数据则该处显示为缺失值NA。右连接与左连接相反保留第二个表的所有行并匹配第一个表的数据。第一个表中没有的键值对应的数据会显示为缺失值。内连接只保留键值在两个表的共有列中都存在的行。即结果只包含两个表共有的键值对应的数据。全连接保留两个表中的所有行缺失的数据用NA填充。连接数据可能相当棘手也存在一定风险因为有很大的出错空间可能导致数据丢失或错误合并。键值列中的微小不一致都可能造成错误和不匹配。有时你可能需要进行更复杂的模式匹配或其他技巧才能使连接正常工作。务必、务必、务必通过手动检查数据来验证你的连接操作是否正确。关于连接的更多信息强烈建议你阅读《R for Data Science》的第13章该章节已包含在本视频的后续阅读材料中。如果你能理解那部分内容你将能够合并各种有趣的数据并创建出色的可视化图表。本节课中我们一起学习了数据整理的两个高级技能使用pivot_longer和pivot_wider进行数据透视以及使用左连接、右连接、内连接和全连接来合并多个数据表。掌握这些技能能帮助你整合不同来源和格式的数据为后续的数据分析和可视化打下坚实的基础。
RELATED

相关推荐

葡萄成熟度检测YOLO数据集解析:从标签转换到模型训练全流程

葡萄成熟度检测YOLO数据集解析:从标签转换到模型训练全流程

简介:面向葡萄成熟度检测场景的目标检测数据集,适合需要训练YOLO系列模型的算法工程师与研究人员使用,能直接服务于果实成熟度识别、农业自动化采摘等应用方向。这份数据已统一为YOLO格式,并划分好训练集与验证集,包含…

📅 2026/9/23 5:21:40
NNI 模型量化完全指南:从 QAT/PTQ 量化器到 TensorRT 推理加速

NNI 模型量化完全指南:从 QAT/PTQ 量化器到 TensorRT 推理加速

NNI 模型量化完全指南:从 QAT/PTQ 量化器到 TensorRT 推理加速 【免费下载链接】nni An open source AutoML toolkit for automate machine learning lifecycle, including feature engineering, neural architecture search, model compression and hyper-paramete…

📅 2026/9/23 5:21:40
Java数组核心知识全解析:从内存本质到算法实战

Java数组核心知识全解析:从内存本质到算法实战

数组在Java里的地位很微妙。你说它简单吧,其实任何一门编程语言的数据结构课,都是从数组讲起的;你说它难吧,但你看面试里那些“熟面孔”——冒泡排序、数组去重、二维数组、数组转字符串、双指针区间求最值,本质上全是…

📅 2026/9/23 5:16:40
MORE NEWS

更多资讯

📰

3个技巧搞定cf任务助手性能优化实战

3个技巧搞定cf任务助手性能优化实战 版本升级后 API 全变了,看着满屏的报错心里直发慌?别急,这种“推倒重来”的焦虑在运维和开发圈太常见了。对于中小施工企业负责人来说,搞懂 cf任务助手 这类自动化工具背后的 性能优化…

📰

AI赋能智能制造:关键技术、应用场景与实施挑战

1. 政策背景与核心目标解析这份专项行动实施意见的出台,标志着智能制造领域正式进入AI深度赋能的新阶段。作为从业十余年的工业自动化工程师,我亲历了从传统PLC控制到如今AI质检的产业升级全过程。这份文件最令我振奋的是,它首次从政策层面明…

📰

百度牛图解原理:3分钟搞懂核心源码与实战避坑指南

百度牛图解原理:3分钟搞懂核心源码与实战避坑指南 官方文档太长抓不住重点?别急,直接看图解原理。 很多新手一看到复杂的系统源码就头大,觉得那是大厂天才的专属游戏。 其实,把核心逻辑拆开揉碎,你会发现套路都差不多。…

📰

战网安全令防黑指南:3步解决登录报错

战网安全令防黑指南:3步解决登录报错 登录战网时,屏幕突然弹出一串红色报错代码?StackTrace 堆栈信息满屏飘,根本看不出哪里错了。这种时候,别慌,更别盲目重启电脑。解决这类安全验证失败的 最佳实践…

📰

lx3调试指南:3步搞定代码报错,掌握最佳实践

lx3调试指南:3步搞定代码报错,掌握最佳实践 复制来的代码跑不通,报错信息一堆英文看不懂,改哪里都不对劲?这是很多转行做开发的朋友最崩溃的时刻。别慌,这不是你笨,是你还没掌握 lx3 环境下的调试 最佳实践 。…

📰

110、WebSocket实时通信Agent

110、WebSocket实时通信Agent 最近在调一个Agent服务,前端页面上的对话气泡总是卡在“思考中……”半天不动,后端日志里却能看到LLM的token早就流完了。我一开始怀疑是SSE的缓存问题,后来抓包一看,WebSocket连接早就断了,前端还在傻乎乎地等onmessage。这种问题很典型——…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬