下面内容摘录自《用R探索医药数据科学》专栏文章的部分内容。栏目后续章节的文章将深入概括R语言在临床研究和新药创新领域的应用,填补了国内R教材中尚未广泛覆盖的部分内容。3章2节:继续讲R的数据结构,数组、数据框和列表-CSDN博客文章浏览阅读905次。在R中数据结构(用于存储数据的形式)包括:向量、矩阵、数组、数据框和列表等。熟悉不同数据结构的基本概念和操作技巧,是我们处理数据和分析数据的基础。https://blog.csdn.net/2301_79425796/article/details/140757077
欢迎订阅我们专栏
.......前面部分请点击上面链接看原文(原文5426字)
3、数组(Array)
数组(Array)是一种重要的数据结构。它与矩阵有一定的相似性,都只能包含同一类型的数据。然而,数组有一个显著的特点,那就是其维度可以大于 2,这一点与矩阵不同。在 R 语言里,数组通过 array()
函数来创建。这个函数包含了几个关键的参数。首先是 data
参数,它代表着用于创建数组的元素。例如,我们想要创建包含数值 11 至 12 的数组,就会在 data
参数中进行设定。其次是 dim
参数,这是数组的维数,且为数值型向量。通过合理地设置 dim
参数,我们能够精确地定义数组的维度结构。再者是 dimnames
参数,它是各维度中的名称标签列表,有助于为数组的各个维度赋予更具描述性的名称。
以下示例展示了如何创建一个包含数值11到12、具有三个维度的数组arr.data
:
dim1 <- c("A1", "A2")
dim2 <- c("B1", "B2", "B3", "B3")
dim3 <- c("C1", "C2", "C3")
arr.data <- array(data = c(1:12), dim = c(2, 4, 3), dimnames = list(dim1, dim2, dim3))
print(arr.data)
这段代码创建了一个三维数组
arr.data
,数组的元素是从1到12的连续整数。dim1
、dim2
和dim3
分别定义了数组的三个维度的名称:第一维有两个元素 "A1" 和 "A2",第二维有四个元素 "B1", "B2", "B3", "B3"(注意重复),第三维有三个元素 "C1"、"C2" 和 "C3"。dim
参数指定了数组的维度大小为 2×4×3。最后,通过print(arr.data)
打印出这个带有维度名称的三维数组。
输出结果:
, , C1
B1 B2 B3 B3
A1 1 3 5 7
A2 2 4 6 8
, , C2
B1 B2 B3 B3
A1 9 11 1 3
A2 10 12 2 4
, , C3
B1 B2 B3 B3
A1 5 7 9 11
A2 6 8 10 12
在上述代码中,我们定义了三个维度并使用array()
函数创建了一个三维数组。dimnames
参数为每个维度添加了标签,使得数据更具可读性。
临床数据的数组举例
假设我们有四个患者的信息,我们将这些信息存储在一个三维数组中。数组的三个维度分别表示患者ID、属性类别(如年龄、性别和健康状态)以及属性值。
# 定义维度名称
patient_ids <- c("Patient1", "Patient2", "Patient3", "Patient4")
attributes <- c("Age", "Gender", "Health Status")
# 创建一个包含12个数值的数组,表示4个患者的3种属性
data <- c(55, 64, 58, 62, # Age
1, 2, 1, 2, # Gender (1=Male, 2=Female)
3, 2, 1, 2) # Health Status (1=Poor, 2=Improved, 3=Excellent)
# 创建二维数组
medical_data <- array(data, dim = c(4, 3), dimnames = list(patient_ids, attributes))
print(medical_data)
输出结果:
Age Gender Health Status
Patient1 55 1 3
Patient2 64 2 2
Patient3 58 1 1
Patient4 62 2 2
我们还可以为每个患者添加更多的信息维度,例如:病史记录、实验室结果等。
# 定义更多维度名称
history <- c("No History", "History")
lab_results <- c("Lab1", "Lab2", "Lab3")
# 创建一个包含更多维度的数组
data_extended <- c(55, 64, 58, 62, # Age
1, 2, 1, 2, # Gender (1=Male, 2=Female)
3, 2, 1, 2, # Health Status (1=Poor, 2=Improved, 3=Excellent)
0, 1, 0, 1, # History (0=No, 1=Yes)
100, 110, 105, 120, # Lab1 results
200, 190, 180, 210, # Lab2 results
300, 310, 320, 330) # Lab3 results
# 创建多维数组
medical_data_extended <- array(data_extended, dim = c(4, 3, 3),
dimnames = list(patient_ids, attributes, lab_results))
# 打印扩展后的数组
print(medical_data_extended)
输出结果:
, , Lab1
Age Gender Health Status
Patient1 55 1 3
Patient2 64 2 2
Patient3 58 1 1
Patient4 62 2 2
, , Lab2
Age Gender Health Status
Patient1 0 100 200
Patient2 1 110 190
Patient3 0 105 180
Patient4 1 120 210
, , Lab3
Age Gender Health Status
Patient1 300 55 1
Patient2 310 64 2
Patient3 320 58 1
Patient4 330 62 2
4、数据框(Data frame)
在这里,你学到的并非仅仅是 R 的某一个技巧,而是能够从零开始,深入且系统地学习 R 语言。此外,本专栏每周至少定期更新三篇文章,每篇文章篇幅均在 5000 字以上。而且,对于已经发表的知识点,我们也会根据新的技术或理解及时进行更新,这是纸质版图书无法做到的。为了让更多的忠实粉丝和同学们享受到实惠,本专栏采用折扣定价策略。随着章节的不断完成,折扣力度会逐渐减小。所以,现在正是订阅的最佳时机!
https://blog.csdn.net/2301_79425796/category_12729892.html?spm=1001.2014.3001.5482
第一章:认识数据科学和R
1章1节:数据科学的发展历程,何 R 备受青睐及我们专栏的独特之处(更新20240822)-CSDN博客
1章2节:关于人工智能、机器学习、统计学连和机器学习、R 与 ChatGPT 的探究 (更新20240814)-CSDN博客
1章3节:R 语言的产生与发展轨迹(更新2024/08/14)-CSDN博客
1章4节:数据可视化, R 语言的静态绘图和 Shiny 的交互可视化演示(更新20240814)-CSDN博客
第二章:R的安装和数据读取
2章1节:R和RStudio的下载和安装(Windows 和 Mac)_rst语言选择哪个镜像-CSDN博客
2章2节:RStudio 四大区应用全解,兼谈 R 的代码规范与相关文件展示_rstudio的console和terminal-CSDN博客
2章3节:RStudio的高效使用技巧,自定义RStudio环境(更新20240823)_rstudio如何使用-CSDN博客
2章4节:用RStudio做项目管理,静态图和动态图的演示,感受ggplot2的魅力-CSDN博客
2章5节:认识和安装R的扩展包,什么是模糊搜索安装,工作目录和空间的区别与设置(更新20240807 )-CSDN博客
2章6节:R的数据集读取和利用,如何高效地直接复制黏贴数据到R(更新20240807 )_r语言 复制数据集-CSDN博客
2章7节:读写RDS,CSV,TXT,Excel,SPSS、SAS、Stata、Minitab等的数据文件(更新20240807)_r语言读取rds文件-CSDN博客
2章8节:一文学会 R Markdown 的文档核心操作,切记文末有R资源的分享_r markdown文件(.rmd)-CSDN博客
2章9节:认识R与数据库连接和网络爬虫,学会在R中使用SQL语言_sql和r语言-CSDN博客
2章10节:用 R 直接下载并分析 NHANES 数据库的数据,文末示例自创便捷下载函数(更新20240807)_nhanes数据分析-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节:散点矩阵图,与小提琴图、Cleveland 点图、马赛克图和等高图-CSDN博客
7章6节:用R进行图形的保存与导出,详细的高级图形输出,一文囊括大多数保存的各种问题,和如何批量保存不同情况的图形-CSDN博客
第八章:R的进阶绘图
8章1节:认识 ggplot2 扩展包,深度解析 qplot() 函数的使用-CSDN博客
8章2节:深度讲解 ggplot2 的绘图步骤,理解其核心逻辑, 和 ggplot()函数-CSDN博客
8章3节:用R来绘制医学地理图,文末有具体完整代码-CSDN博客
8章4节:维恩图的认识与应用,和使用UpSet图-CSDN博客
8章8节:绘制自定义的高质量动态图和交互式动态图-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博客