《R语言经典实例(原书第2版)》的第2版涵盖了277个R语言实用方法,可以帮助你快速而有效地使用R进行数据分析。R语言给我们提供了统计分析的一切工具,但是R本身的结构可能不容易掌握。
《R语言经典实例(原书第2版)》提供的面向任务的R语言实用方法涉及从基本的分析任务到输入和输出、常用统计分析、绘图、线性回归等内容,它们可以让你马上应用R高效地工作。
每一个R语言方法都专注于一个特定的问题,随后的讨论则对问题的解决方案给出解释,并阐释该方法的工作机理。
对于R的初级用户,《R语言经典实例(原书第2版)》将帮助你步入R的殿室;对于R的中级用户,《R语言经典实例(原书第2版)》将加深你对R的理解并拓展你的视野。
通过《R语言经典实例(原书第2版)》,可以使你的分析工作顺利完成并学习更多R语言知识。
《R语言经典实例(原书第2版)》主要内容:
建立向量、处理变量,以及执行其他基本函数。
简化数据的输入和输出。
处理矩阵、列表、因子和数据框等数据结构。
分析概率、概率分布和随机变量。
计算统计量和置信区间,进行统计检验。
创建各种图形。
构建线性回归和方差分析(ANOVA)等统计模型。
探索高级统计技术,如聚类分析等。
本书通过270多个应用实例,阐明了如何用R快速、有效地进行数据分析。主要内容包括软件安装和帮助、基础知识、软件导览、输入与输出、数据结构、数据转换、字符串和日期、统计概论、图形、线性回归和方差分析、实用技巧、高级数值分析和统计方法、时间序列分析等。R语言功能强大,可以帮你处理一切统计工作,但是其结构却不容易掌握,本书通过简洁的、面向任务的实例,可以帮助读者快速利用R解决实际问题。
R软件是进行统计分析、绘图和统计编程的强大工具。现在成千上万的人用它来进行日常的重要统计分析。R是一个自由、开源的软件系统,它是许多聪明、勤奋工作的人的集体工作成果。R有超过10 000个软件包插件,是其他商业统计软件包的强劲竞争对手。
但是,刚开始使用R软件时可能感到无从下手。对许多人来说,即便是一些基本的任务,R的实现也不是很明显。当了解了R的使用方法后,简单的问题自然能得心应手地解决,但学习“如何”使用R的过程有时会让人感到发狂。
本书介绍了如何使用R软件的一些方法,其中每一个方法对应解决某个特定的问题。介绍这些方法的途径为:首先给出待解决的问题,然后给出解决方案的简单介绍,之后再给出对解决方案的讨论,深入剖析解决方案,给出该方案的原理。我们知道这些方法实用,也知道这些方法可行,因为我们也在使用它们。
这些方法所涉及的范围较为广泛。首先,从基本的任务开始介绍,然后介绍数据的输入和输出、基本统计、图形以及线性回归。与R有关的工作都或多或少地涉及本书介绍的方法。
通过学习本书,初学者能快速了解R并上手。如果你对R软件有一定的了解,那么本书也能帮助你巩固已学的知识,拓宽你的思维(例如,“下一次我应该怎么使用Kolmogorov-Smirnov检验”)。
从严格意义上来说,本书并不是一本关于R软件的教程,但你将会从中学习到许多R软件的应用技巧。本书也不是一本关于R的参考手册,但它确实包含了许多实用的内容。本书更不是一个R软件的编程指南,但书中很多方法都可以应用到R的编程脚本中。
最后,本书不是统计学理论的参考书。本书假设读者对统计理论和方法有一定的了解,想知道的是如何在R软件中实现。
方法
本书介绍的大部分方法,都是由一两个R函数或命令来解决某一特定问题。需要注意的是,书中不会对某一函数的全部能力进行详细解释,而是仅介绍那些与需要解决的问题有关的函数能力。R软件中几乎所有的函数所具备的能力都远远不止本书中所介绍的,其中有的函数具有更强大的能力。因此强烈建议读者阅读这些函数的帮助页面,你可能会从中得到不少收获。
每个方法都为读者提供了解决某个问题的一条途径。当然对于每个问题有可能存在多个正确的解决方案。在这种情况下,我们一般会选择最为简单的方法。对于书中给出的任何问题,你自己或许可以找到其他一些解决方案。本书着重介绍解决问题的方法,类似“菜谱”书,而不是R软件的大全书。
尤其是,R软件有大量的添加包,这几千个R添加包都可以从网络下载。这些包中含有许多替代算法和统计方法。本书侧重于R基础发布版所带的核心功能,以及几个重要的放在一起统称为tidyverse的添加包。
tidyverse最简洁的定义来自Hadley Wickham—tidyverse的创始人和它的核心维护者之一:
“tidyverse是一组协调工作的添加包,它们共享通用数据表达式和API设计。tidyverse包旨在使其易于通过单个命令安装和加载核心包。了解tidyverse中的所有添加包以及它们如何组合在一起的最佳方式是阅读R for Data Science(http://r4ds.had.co.nz)一书。”
对术语的说明
每个方法旨在迅速地解决问题,而非长篇大论地进行论述。因此我们有时候会采用一些术语来简化相关内容的解释,这些术语有时候可能不精确,但是正确的。比如,术语泛型函数。我们把函数print(x)和plot(x)称为泛型函数,原因是它们能适当地处理多种输入参数x。计算机科学家可能会质疑这一术语,因为严格来说这些都不是简单的“函数”,它们是多态方法并且动态调度。但是,如果我们仔细地精确定义所有这样的技术细节,那么关键的解决方案将会埋没于这些细枝末节的技术问题中。所以为了便于阅读,我们就将它们称为函数。
另一个例子是统计学中的假设检验术语。若使用概率论的严格定义,就会使读者难以清晰理解这些检验的实际应用,所以我们以更通俗的语言来描述各个统计检验。更多有关假设检验方法的细节,请查看第9章的简介部分。
我们的目标是用通俗易懂而非严格的正式语言,让R软件能被更多的读者所理解和接受。因此希望各个领域的专家对于我们所给出的某些并不严谨的术语与定义予以谅解。
软件及平台说明
虽然R软件时常进行有计划的版本更新,但其语言定义和核心实现是稳定的。本书所介绍的方法适用于基础发布版的任何最新版本。
有些方法对于操作平台有特殊的要求,我们会在文中对其加以标注,这些方法大多数是一些软件本身的问题,如程序的安装和配置。据我们所知,书中的所有其他方法在R的三个主要平台(即Windows、macOS和Linux/Unix)上都能运行。
其他资源
如果你想进行更深入的阅读,下面是一些进一步阅读的建议。
网络
R项目网站(http://www.r-project.org)汇集了所有R软件的相关资源,从中可以下载R程序代码、R添加包、文档、源代码等。
除了R项目网站以外,我们建议使用一个针对R软件的搜索引擎,比如Sasha Goodman开发的RSeek搜索引擎(http://rseek.org),也可以使用谷歌这样的通用搜索引擎,但在搜索“R”关键词时可能会得到许多无关的搜索结果。更多有关网络搜索的细节参见1.11节。
浏览博客也是一种学习R软件和
J. D. Long在纽约市的Renaissance Re公司工作。他是Python、R和AWS的狂热用户,喜欢使用各种专业术语,并且经常在R会议上发表演讲。他是芝加哥R User Group的创始人。
前言1
第1章 R入门和获得帮助9
11 下载和安装R软件10
12 安装RStudio12
13 开始运行RStudio13
14 输入R命令14
15 退出RStudio16
16 中断R正在运行的程序17
17 查看帮助文档18
18 获取函数的帮助文档20
19 搜索帮助文档22
110 查看R添加包帮助信息23
111 通过网络获取帮助24
112 寻找相关函数与添加包27
113 搜索邮件列表28
114 向Stack Overflow或社区的其他网站提交问题29
第2章 基础知识32
21 在屏幕上显示内容32
22 设定变量34
23 列出所有变量35
24 删除变量37
25 生成向量38
26 计算基本统计量40
27 生成数列42
28 向量比较44
29 选取向量中的元素45
210 向量的计算48
211 运算符优先级问题50
212 减少输入,得到更多命令52
213 创建函数调用的管道53
214 避免常见错误56
第3章 R软件导览61
31 获取和设定工作目录61
32 创建一个新的RStudio项目62
33 保存工作空间64
34 查看历史命令记录65
35 保存先前命令产生的结果66
36 通过搜索路径显示已加载的软件包67
37 查看已安装的R包列表68
38 使用R包中的函数69
39 使用R的内置数据集71
310 从CRAN网站安装R包72
311 从GitHub网站安装R包74
312 设定或改变默认CRAN网站镜像75
313 运行脚本76
314 批量运行R代码77
315 找到R的主目录80
316 R的自定义81
317 在云端使用R和RStudio84
第4章 输入与输出86
41 使用键盘输入数据86
42 显示更少的位数(或更多的位数)87
43 将输出结果重定向到文件89
44 显示文件列表90
45 解决无法在Windows中打开文件的问题92
46 读取固定宽度的数据记录93
47 读取表格数据文件96
48 读取CSV文件99
49 写入CSV文件101
410 从网络中读取表格或CSV格式数据103
411 从Excel文件读取数据104
412 将数据框写入Excel文件105
413 从SAS文件读取数据108
414 读取HTML表格数据109
415 读取复杂格式数据文件112
416 读取MySQL数据库中的数据116
417 通过dbplyr访问数据库118
418 保存和传送对象120
第5章 数据结构123
51 对向量添加数据131
52 在向量中插入数据132
53 理解循环规则133
54 构建因子134
55 将多个向量合并成单个向量以及一个平行因子136
56 创建列表137
57 根据位置选定列表元素139
58 根据名称选定列表元素141
59 构建一个名称/值关联表142
510 从列表中移除元素144
511 将列表转换为向量145
512 从列表中移除空值元素146
513 使用条件来移除列表元素147
514 矩阵初始化149
515 执行矩阵运算150
516 将描述性名称赋给矩阵的行和列151
517 从矩阵中选定一行或一列152
518 用列数据初始化数据框153
519 用行数据初始化数据框155
520 对数据框添加行157
521 根据位置选择数据框的列159
522 根据名称选择数据框的列163
523 修改数据框的列名165
524 从数据框中移除NA值166
525 根据名称排除列167
526 合并两个数据框168
527 根据共有列合并数据框169
528 基本数据类型之间的转换171
529 从一种结构化数据类型转换到另一种数据类型172
第6章 数据转换175
61 将函数应用于列表的每个元素175
62 将函数应用于数据框的每一行178
63 将函数应用于矩阵的每一行179
64 将函数应用于每一列180
65 将函数应用于平行向量或列表182
66 将函数应用于一组数据184
67 基于条件生成一个新列185
第7章 字符串和日期187
71 获取字符串长度189
72 连接字符串190
73 提取子串191
74 根据分隔符分割字符串192
75 替代子串193
76 生成字符串的所有成对组合194
77 得到当前日期196
78 转换字符串为日期196
79 转换日期为字符串197
710 转换年、月、日为日期198
711 得到儒略日期200
712 提取日期的一部分200
713 创建日期序列202
第8章 概率204
81 计算组合数206
82 生成组合206
83 生成随机数207
84 生成可再生的随机数209
85 生成随机样本210
86 生成随机序列212
87 随机排列向量213
88 计算离散分布的概率213
89 计算连续分布的概率215
810 转换概率为分位数216
811 绘制密度函数218
第9章 统计概论222
91 数据的汇总224
92 计算相对频数226
93 因子数据的表格和列联表创建227
94 检验分类变量独立性228
95 计算数据集的百分位数(和四分位数)229
96 求分位数的逆230
97 数据转换为z分数231
98 检验样本均值(t检验)232
99 均值的置信区间233
910 中位数的置信区间234
911 检验样本比例235
912 比例的置信区间236
913 检验正态性237
914 游程检验239
915 比较两个样本的均值240
916 比较两个非参数样本的位置242
917 检验相关系数的显著性243
918 检验组的等比例244
919 组均值间成对比较246
920 检验两样本的相同分布247
第10章 图形249
101 创建散点图252
102 添加标题和标签254
103 添加(或去除)网格255
104 给ggplot图形添加主题258
105 创建多组散点图262
106 添加(或去除)图例263
107 绘制散点图