
运用tidyr包和认识spread()函数
在数据分析中,数据的存储方式直接影响分析过程的效率和准确性。常见的数据存储形式有宽型数据(wide format)和长型数据(long format)。宽型数据适合人类查看和理解,而长型数据则更适合计算机处理和分析。为此,R语言提供了tidyr包,用于在这两种数据格式之间进行转换。本指南将详细介绍tidyrgather()和spread(),并结合实际案例进行讲解。
下面内容摘录自《用R探索医药数据科学》专栏文章的部分内容(原文6047字)。
4章3节:处理医学类原始数据的重要技巧,R语言中的宽长数据转换,tidyr包的使用指南_r语言 医学公共数据库 变量类型及转换-CSDN博客
在数据分析中,数据的存储方式直接影响分析过程的效率和准确性。常见的数据存储形式有宽型数据(wide format)和长型数据(long format)。宽型数据适合人类查看和理解,而长型数据则更适合计算机处理和分析。为此,R语言提供了
tidyr
包,用于在这两种数据格式之间进行转换。本指南将详细介绍tidyr
包中最常用的两个函数:gather()
和spread()
,并结合实际案例进行讲解。
三、安装和加载tidyr包
tidyr
是R语言中用于数据清理和重塑的重要工具,其主要目的是帮助用户创建“整洁数据”(tidy data)。在整洁数据中,每一个变量占用一列,每一条观察值占用一行,每个单元格包含一个单一的值。tidyr
提供了丰富的工具来改变数据的形状(即数据的pivoting)和层次结构(即嵌套和解嵌套)。
在开始之前,确保已经安装并加载了tidyr
包。可以使用以下命令进行安装和加载:
install.packages("tidyr")
library(tidyr)
1、创建示例数据
我们首先创建一个简单的宽型数据框datapati
,该数据框包含三个变量(x
、y
、z
)和一个时间变量time
:
library(tibble)
datapati <- tibble(time = as.Date('2025-01-01') + 1:3, x = c(1, 2, 3), y = c(8, 5, 6), z = c(3, 0, 3))
print(datapati)
结果是:
# A tibble: 3 × 4
time x y z
<date> <dbl> <dbl> <dbl>
1 2025-01-02 1 8 3
2 2025-01-03 2 5 0
3 2025-01-04 3 6 3
2、gather()函数
3、spread()函数
spread()
函数用于将长型数据转换为宽型数据。
spread(data, key, value, fill = NA, convert = FALSE, drop = TRUE, sep = NULL)
我们先创建一个新的长型数据框datapati2
:
datapati2 <- data.frame(x = c("a", "b", "c"), y = c(3, 4, 5))
print(datapati2)
结果是:
x y
1 a 3
2 b 4
3 c 5
使用spread()
函数将其转换为宽型数据:
datapati_wide <- spread(datapati2, key = x, value = y)
print(datapati_wide)
结果是:
a b c
1 3 4 5
更复杂的示例
考虑一个更复杂的情境,我们有一个包含多个变量的数据框:
library(tibble)
data_complex <- tibble(
id = 1:3,
age = c(23, 45, 31),
income = c(50000, 60000, 55000),
height = c(175, 160, 180),
weight = c(70, 80, 75)
)
print(data_complex)
结果是:
# A tibble: 3 × 5
id age income height weight
<int> <dbl> <dbl> <dbl> <dbl>
1 1 23 50000 175 70
2 2 45 60000 160 80
3 3 31 55000 180 75
将其转换为长型数据:
data_complex_long <- gather(data_complex, key = "variable", value = "value", -id)
print(data_complex_long)
结果是:
# A tibble: 12 × 3
id variable value
<int> <chr> <dbl>
1 1 age 23
2 2 age 45
3 3 age 31
4 1 income 50000
5 2 income 60000
6 3 income 55000
7 1 height 175
8 2 height 160
9 3 height 180
10 1 weight 70
11 2 weight 80
12 3 weight 75
将长型数据转换回宽型数据:
data_complex_wide <- spread(data_complex_long, key = variable, value = value)
print(data_complex_wide)
结果是:
# A tibble: 3 × 5
id age height income weight
<int> <dbl> <dbl> <dbl> <dbl>
1 1 23 175 50000 70
2 2 45 160 60000 80
3 3 31 180 55000 75
市面上的 R 语言培训班和书籍(包括网络上的文章或视频),由于受限于培训时间或书籍篇幅,往往难以深入探讨 R 语言在数据科学或人工智能中的具体应用场景,内容泛泛而谈,最终无法真正解决实际工作中的问题。同时,它们也缺乏针对医药领域的深度结合与讨论。为了解决这些痛点,我们推出了《用 R 探索医药数据科学》专栏。该专栏将持续更新,不仅为您提供系统化的学习内容,更致力于成为您掌握最新、最全医药数据科学技术的得力助手。
- 每篇文章篇幅在5000字 至9000字之间。
- 内容涵盖试验统计、预测模型、科研绘图、数据库、机器学习等热点领域。
《用 R 探索医药数据科学》专栏目录
专栏问答
专栏问答:管理和选择不同的R,如何做好R的笔记,使用 openxlsx 包(更新20240822)_rstudio不同的r-CSDN博客
专栏问答:R 语言扩展包安装出问题?解决方案详细来教你(更新20250128)-CSDN博客
专栏问答:到底什么是综述,如何写好综述,如何进行文献搜索?(更新20250217)-CSDN博客
专栏问答:如何更精确地进行文献搜索(更新20250217)-CSDN博客
专栏问答:公共数据库发表能发表国际学术期刊吗?能够成为本硕博的毕业论文主要研究吗?以NHANES数据库为例-CSDN博客
第一章:认识数据科学和R
1章1节:医药数据科学的历程和发展,用R语言探索数据科学(更新20241029)-CSDN博客
1章2节:机器学习、统计学与ChatGPT的概述,与R语言的相关 (更新20241229)_ai、chatgpt和机器学习什么关系-CSDN博客
1章3节:R 语言的产生与发展轨迹(更新2024/08/14)-CSDN博客
1章4节:数据可视化, R 语言的静态绘图和 Shiny 的交互可视化演示(更新20240814)-CSDN博客
1章5节:学会数据分析基础和流程,开始人工智能数据分析师之路-CSDN博客
第二章:R的安装和数据读取
2章1节:R和RStudio的下载和安装(Windows 和 Mac)-CSDN博客
2章2节:RStudio 四大区应用全解,兼谈 R 的代码规范与相关文件展示_rstudio的console和terminal-CSDN博客
2章3节:RStudio的高效使用技巧,自定义RStudio环境(更新20241023)_rstudio如何使用-CSDN博客
2章4节:用RStudio做项目管理,静态图和动态图的演示,感受ggplot2的魅力-CSDN博客
2章5节:详解R的扩展包管理(从模糊安装到自动更新)及工作目录和工作空间的设置(更新20241030 )-CSDN博客
2章6节:R的数据集读取和利用,如何高效地直接复制黏贴数据到R(20240807 )_r语言 复制数据集-CSDN博客
2章7节:用R读写RDS、RData、CSV和TXT格式文件(更新20250129)
2章8节:用R读写Excel、SPSS、SAS、Stata和Minitab等产生的数据文件(更新20250129)
2章9节:在R中应用SQL语言(更新20241217)_r语言与数据库-CSDN博客
2章10节:R的网络爬虫技术快速入门(更新20241217)_如何用r分析inhanes数据库-CSDN博客
第三章:认识数据
3章1节:数据的基本概念以及 R 中的数据结构、向量与矩阵的创建及运算-CSDN博客
3章2节:继续讲R的数据结构,数组、数据框和列表-CSDN博客
3章3节:R的赋值操作与算术运算_r里面的赋值-CSDN博客
第四章:数据的预处理
4章1节:全面了解 R 中的数据预处理,通过 R 基本函数实施数据查阅_r数据预处理-CSDN博客
4章2节:从排序到分组和筛选,通过 R 的 dplyr 扩展包来操作-CSDN博客
4章3节:处理医学类原始数据的重要技巧,R语言中的宽长数据转换,tidyr包的使用指南-CSDN博客
4章4节:临床数据科学中如何用R来进行缺失值的处理_临床生存分析缺失值r语言-CSDN博客
4章5节:数据科学中的缺失值的处理,删除和填补的选择,K最近邻填补法-CSDN博客
4章6节:R的多重填补法中随机回归填补法的应用,MICE包的实际应用和统计与可视化评估-CSDN博客
4章7节:用R做数据重塑,数据去重和数据的匹配-CSDN博客
4章8节:用R做数据重塑,行列命名和数据类型转换-CSDN博客
4章9节:用R做数据重塑,增加变量和赋值修改,和mutate()函数的复杂用法_r语言如何在数据集中添加变量-CSDN博客
4章10节:用R做数据重塑,变体函数应用详解和可视化的数据预处理介绍-CSDN博客
4章11节:用R做数据重塑,数据的特征缩放和特征可视化-CSDN博客
4章12节:R语言中字符串的处理,正则表达式的基础要点和特殊字符-CSDN博客
4章13节:R语言中Stringr扩展包进行字符串的查阅、大小转换和排序-CSDN博客
4章14节:R语言中字符串的处理,提取替换,分割连接和填充插值_r语言替换字符串-CSDN博客
4章15节:字符串处理,提取匹配的相关操作扩展,和Stringr包不同函数的重点介绍和举例-CSDN博客
4章16节:R 语言中日期时间数据的关键处理要点_r语言 时刻数据-CSDN博客
第五章:定量数据的统计描述
5章1节:用R语言进行定量数据的统计描述,文末有众数的自定义函数-CSDN博客
5章2节:离散趋势的描述,文末1个简单函数同时搞定20个结果-CSDN博客
5章3节:在R语言中,从实际应用的角度认识假设检验-CSDN博客
5章4节:从R语言的角度认识正态分布与正态性检验-CSDN博客
5章5节:认识方差和方差齐性检验(三种方法全覆盖)-CSDN博客
5章9节:组间差异的非参数检验,Wilcoxon秩和检验和Kruskal-Wallis检验-CSDN博客
第六章:定性数据的统计描述
6章1节:定性数据的统计描述之列联表,文末有优势比计算介绍-CSDN博客
6章2节:认识birthwt数据集,EpiDisplay和Gmodels扩展包的应用-CSDN博客
6章3节:独立性检验,卡方检验,费希尔精确概率检验和Cochran-Mantel-Haenszel检验-CSDN博客
6章4节:相关关系和连续型变量的Pearson相关分析-CSDN博客
6章5节:分类型变量的Spearman相关分析,偏相关分析和相关图分析-CSDN博客
6章6节:相关图的GGally扩展包,和制表的Tableone扩展包-CSDN博客
第七章:R的传统绘图
7章1节:认识R的传统绘图系统,深度解析plot()函数和par()函数的使用-CSDN博客
7章2节:R基础绘图之散点图、直方图和概率密度图-CSDN博客
7章5节:R基础绘图之Cleveland 点图,马赛克图和等高图(更新20250102)_散点矩阵图-CSDN博客
7章6节:用R进行图形的保存与导出,详细的高级图形输出,一文囊括大多数保存的各种问题,和如何批量保存不同情况的图形-CSDN博客
第八章:R的进阶绘图
8章1节:认识 ggplot2 扩展包,深度解析 qplot() 函数的使用-CSDN博客
8章2节:ggplot2绘图之原理逻辑分解,掌握绘图步骤(更新20241104)-CSDN博客
8章3节:ggplot2绘图之内置主题设置全解析(更新20241104)-CSDN博客
8章4节:ggplot2绘图之几何体解析(一),参考线和基准线与分布图和频数图(更新20241104)-CSDN博客
8章5节:ggplot2绘图之几何体解析(二),关系图和时间序列图与误差条和高级图形平滑曲线(更新20241104)-CSDN博客
8章6节:ggplot2绘图之统计变换与位置调整(更新20250111)-CSDN博客
8章7节:个性化配色的自定义颜色演示_r语言自定义颜色怎么使用-CSDN博客
8章8节:让 ggplot2 绘图进行顶级科研杂志的配色(更新20241118)_ggsci使用-CSDN博客
8章9节:坐标轴须图和带状图(更新20241107)-CSDN博客
8章10节:多样的小提琴图(更新20241231)_r语言parallelplot绘制平行坐标图-CSDN博客
8章13节:网络图(知识图谱)绘制的深度解析(更新20241109)_认知网络分析图怎么看-CSDN博客
8章14节:高质量动态图和交互式动态图_r语言数据分析动图-CSDN博客
8章15节:深度讲解词云图的绘制和改变相关的主题(更新20250106)_d3 词云图-CSDN博客
8章16节:R的地理图绘制(更新20241104)-CSDN博客
8章17节:轻便科研绘图的tidyplots扩展包_科研绘图包-CSDN博客
第九章:临床试验的统计
9章4节:两组例数相同的均数比较的样本量估计和绘制功效曲线-CSDN博客
9章5节:两组的例数不等的均数比较的样本量估计和可视化-CSDN博客
9章6节:自身配对设计的均数比较临床试验的样本量估计和可视化-CSDN博客
9章8节: 两、三组试验组率比较的样本量估算和可视化-CSDN博客
9章9节:试验的随机分组认识,用R做简单随机化-CSDN博客
9章11节:用R实现区组随机化和置换区组随机化-CSDN博客
9章12节:动态随机化方法介绍,和用R绘制随机化卡片-CSDN博客
第十章:Meta分析攻略
10章1节:认识循证医学中的Meta分析,并予代码演示分析绘图-CSDN博客
10章2节:Meta分析的7大步骤的扼要解读-CSDN博客
10章3节:二分类变量的Meta分析模型,分析公式构建和结果解读-CSDN博客
10章4节:二分类变量的Meta分析模型,绘制漏斗图和应用剪补法,最后绘制和解读轮廓增强漏斗图-CSDN博客
10章5节:二分类变量的Meta分析模型,敏感性分析和亚组分析,绘制森林图-CSDN博客
10章6节:连续型变量的Meta分析和可视化分析全解-CSDN博客
第十一章:主成分分析
11章2节:深度讲解用R进行主成分分析(中)-CSDN博客
11章3节:深度讲解用R进行主成分分析(下)-CSDN博客
第十二章:常见类型回归分析
12章4节:深度解读构建回归模型表达式的九个关键符号-CSDN博客
12章7节:构建因变量为分类变量的二分类Logistic回归模型-CSDN博客
12章8节:详解不同逻辑回归模型的比较,和如何进行变量优化-CSDN博客
12章9节:深度讲解有序多分类Logistic回归模型的分析-CSDN博客
12章10节:条件Logistic回归模型的分析-CSDN博客
第十三章:生存分析模型
13章4节:认识比例风险模型和Cox比例风险模型,学会从协变量的调整选择最优模型-CSDN博客
13章5节:用逐步回归方法来选择模型协变量,比例风险假定的检验和森林图的绘制-CSDN博客
第十四章:匹配技术应用
14章2节:匹配结果的可视化和匹配后新数据分析-CSDN博客
第十五章:判别和聚类分析
15章2节:线性判别分析预测模型构建评估和可视化演示-CSDN博客
15章4节:K-Means聚类分析的运用,和改进算法的K-Means++-CSDN博客
15章5节:实现k-medoids聚类算法的PAM和CLARA方法-CSDN博客
第十六章:机器学习入门
16章2节:机器学习在临床预测中的应用场景,与临床预测模型的关键步骤解析-CSDN博客
16章3节:详析训练数据集、测试数据集和验证数据集及其划分策略-CSDN博客
16章4节:采用随机抽样法和等比抽样法对数据集进行二份及三份的划分-CSDN博客
16章5节:划分数据的多次随机抽样的Bootstrap法和加权随机抽样法-CSDN博客
16章6节:交叉验证概述与分类,R中K折交叉验证的详细解析-CSDN博客
16章7节:机器学习算法解读,与数值预测回归模型构建-CSDN博客
16章8节:朴素贝叶斯分类预测模型,从构建、解析到实战-CSDN博客
16章9节:认识决策树,构建CART算法的决策树模型-CSDN博客
16章10节:深度解析如何构建随机森林算法预测模型-CSDN博客
16章11节:构建人工神经网络反向传播算法预测模型-CSDN博客
16章12节:认识机器学习的模型评估,掌握数值型数据的模型评估方法-CSDN博客
16章14节:评估和对比预测模型的ROC曲线和AUC值-CSDN博客
16章15节:六大ROC曲线扩展包的对比,和其它评估曲线的绘制-CSDN博客
第十七章:文献计量学
17章2节:文献计量学的国外数据库的数据采集,WOS数据库和PUBMED数据库的文献信息批量下载和分析
17章10节:为构建网络图从文献数据中提取特定信息-CSDN博客
17章12节:耦合网络可视化,从常规网络图到耦合分析聚类图的深度讲解-CSDN博客
17章13节:共被引网络、历史共被引网络和共词网络的可视化-CSDN博客
17章14节:概念结构图,贡献度最高文献因子图和最被引用文献因子图-CSDN博客
17章15节:文献计量学的语义地图和主题演化分析图-CSDN博客
17章16节:PubMed数据库的数据提取和可视化-CSDN博客
第十八章:时间序列分析
18章1节:认识时间序列分析,创建和整理时间序列数据-CSDN博客
18章3节:认识ARIMA模型和模拟其数据,讲解平稳性检验-CSDN博客
18章4节:ACF和PACF的可视化,和识别最佳模型-CSDN博客
18章5节:如何应用SARIMA模型来进行时间序列数据的预测-CSDN博客
18章6节:Facebook 的时间序列预测的 Prophet 模型-CSDN博客
第十九章:NHANES数据库
19章1节:认识二次数据分析和NHANES数据库-CSDN博客
19章2节:下载NHANES数据并使用R进行读取-CSDN博客
19章3节:NHANES数据的下载读取、追加和合并-CSDN博客
19章4节:NHANES的抽样权重、方差估计和估计值评估-CSDN博客
19章5节:处理NHANES数据的options和svydesign函数-CSDN博客
19章5节:处理NHANES数据的options和svydesign函数-CSDN博客
19章6节:复现NHANES的美国成人抑郁症患病率研究(上)-CSDN博客
19章7节:复现NHANES的美国成人抑郁症患病率研究(中)-CSDN博客
19章8节:复现NHANES的美国成人抑郁症患病率研究(下)-CSDN博客
19章9节:一步一步构建高效读取NHANES数据的自定义函数-CSDN博客
19章10节:如何解决 NHANES 数据合并所遇原表差异问题-CSDN博客
19章11节:2025年后如何使用扩展包访问、下载和分析 NHANES 数据-CSDN博客
19章12节:如何直接显示NHANES某个变量的代码本-CSDN博客
19章13节:根据关键词检索NHANES变量和得到相关信息,并且通过指定URL直接下载数据-CSDN博客
19章14节:下载 NHANES 的数据清单、搜索表格和表格里面的变量汇总-CSDN博客
19章15节:快速获取 NHANES 特定的表格信息和变量信息-CSDN博客
第二十章:gglot2扩张包
20章1节:模型系数图、相关矩阵图、双变量成对矩阵图-CSDN博客
20章4节:绘制高级散点矩阵图和多样生存曲线图-CSDN博客
20章5节:绘制分面直方图,多元时间序列图和二元密度图-CSDN博客
20章6节:绘制切尔诺夫面图(疼痛评分的笑脸可视化)和时间序列数据的日历热图-CSDN博客
20章7节:绘制时间序列地平线图和时间序列流图-CSDN博客
20章11节:绘制议会图和深度讲解绘制山峦图(岭线图)-CSDN博客
20章12节:多元统计分析的可视化扩展包,从主成分分析到时间序列,从K-means聚类到广义线性模型-CSDN博客
第二十一章:三维图形可视化
21章2节:深度讲解如何绘制三维透视图,从内置函数到扩展包函数-CSDN博客
21章4节:绘制三维切片图和三维切片轮廓图,文末添加三维文本信息-CSDN博客
21章5节:如何绘制三维曲面图、三维球面图和三维曲面地形图-CSDN博客
21章6节:绘制三维等值面图、三维等值体素图和三维多边形图-CSDN博客
21章9节:如何将 ggplot2 对象转化为三维图形-CSDN博客
第二十二章:文档和课件输出
22章1节:用R写作,先认识 NoteBook 和 Markdown-CSDN博客
22章2节:如何在 R Markdown 和 R Notebook 中创建使用-CSDN博客
22章3节:R Markdown的创建详解和直接使用学术期刊和出版社的模板-CSDN博客
22章4节:R Markdown 的文档开头(YAML),从基础到扩展包-CSDN博客
22章5节: Markdown 的标题、列表、字词和链接-CSDN博客
22章6节:R Markdown 的代码块、绘图与数学公式解析-CSDN博客
22章7节:Knit 的文档生成,和多文档流程的集合应用-CSDN博客
22章8节:HTML Widgets,将 JavaScript 可视化库封装成 R 函数-CSDN博客
22章9节:使用 R Markdown 和 Shiny 结合R语言进行数据报告和交互式应用的创建-CSDN博客
第二十三章:抽样与重抽样技术
23章2节:模型抽样,调查抽样和抽样技术的专业术语-CSDN博客
23章3节:总群体的统计量和抽样方法在医药研究中的应用-CSDN博客
23章7节:简单随机抽样及其在R语言中的实现与验证-CSDN博客
23章8节:系统性随机抽样及其在R语言中的实现与验证-CSDN博客
23章9节:分层随机抽样及其在R语言中的实现与验证-CSDN博客
23章10节:聚类抽样及其在R语言中的实现与验证-CSDN博客
更多推荐
所有评论(0)