R for Data Science 第二版
前言
本系列为《R数据科学》(R for Data Science)第二版的学习笔记。本书将教你如何使用 R 进行数据科学研究:你将学习如何将数据导入 R,将其转换为最有用的结构,并将其可视化。
本书:https://r4ds.hadley.nz/
练习答案:https://mine-cetinkaya-rundel.github.io/r4ds-solutions
本书变化
以下是最大变化的简要概述:
• 本书的第二部分是 "可视化"。与第一版相比,这一部分更全面地介绍了数据可视化工具和最佳实践。获取所有详细信息的最佳途径仍然是 ggplot2 一书,但现在 R4DS 涵盖了更多最重要的技术。
• 本书的第三部分现在称为 "转换",新增了关于数字、逻辑向量和缺失值的章节。这些内容以前是数据转换章节的一部分,但需要更多的篇幅来涵盖所有细节。
• 本书的第四部分名为 "导入"。这是一组新的章节,除了读取平面文本文件外,还包括使用电子表格、从数据库中获取数据、使用大数据、矩形化分层数据以及从网站上搜数据。
• 程序 "部分仍然保留,但已从上到下重新编写,重点放在函数编写和迭代的最重要部分。函数编写现在包括如何包装整洁反转函数(应对整洁评估的挑战)的细节,因为这在过去几年中变得更加容易和重要。我们添加了一个新章节,介绍重要的基础 R 函数,您很可能会在野生 R 代码中看到这些函数。
• 建模部分已被删除。我们从来没有足够的空间来充分发挥建模的作用,而且现在有更好的资源可供使用。我们一般推荐使用 tidymodels 软件包,并阅读 Max Kuhn 和 Julia Silge 合著的《用 R 进行 Tidy 建模》。
• "交流 "部分依然保留,但已彻底更新,以 Quarto 代替 R Markdown。本书的这一版是用 Quarto 编写的,它显然是未来的工具。
你将学到什么
数据科学是一个广阔的领域,你不可能通过阅读一本书就掌握所有知识。本书旨在为你打下坚实的基础,让你掌握最重要的工具和足够的知识,以便在必要时找到学习更多知识的资源。我们的典型数据科学项目步骤模型如图 1 所示。
在我们的数据科学流程模型中,首先是数据导入和整理。然后,通过转换、可视化和建模的迭代循环来理解数据。最后,将结果传达给其他人。
首先,您必须将数据导入 R。这通常意味着您需要将存储在文件、数据库或网络应用程序编程接口 (API) 中的数据加载到 R 的数据框架中!
导入数据后,最好对其进行整理。整理数据意味着以一致的形式存储数据,使数据集的语义与存储方式相匹配。简而言之,当数据整齐时,每一列都是一个变量,每一行都是一个观测值。整洁的数据非常重要,因为一致的结构可以让您专注于回答有关数据的问题,而不是为不同的功能将数据转换成正确的形式。
有了整洁的数据后,下一步通常是对数据进行转换。转换包括缩小感兴趣的观测值的范围(如某个城市的所有居民或去年的所有数据),创建作为现有变量函数的新变量(如根据距离和时间计算速度),以及计算一组汇总统计量(如计数或均值)。将整理和转换合在一起称为 "整理"(wrangling),因为将数据转换成一种自然的工作形式往往让人感觉像是在战斗!
一旦获得了包含所需变量的整洁数据,知识生成就有了两个主要引擎:可视化和建模。这两种引擎优缺点互补,因此任何真正的数据分析都会在它们之间反复多次。
从根本上说,可视化是一种人类活动。好的可视化会向你展示你意想不到的东西,或提出有关数据的新问题。好的可视化还可能暗示你问错了问题,或者你需要收集不同的数据。可视化可以给你带来惊喜,但它们的扩展性并不是特别好,因为它们需要人来解释。
模型是可视化的补充工具。一旦问题足够精确,就可以使用模型来回答。从根本上说,模型是数学或计算工具,因此它们通常具有良好的扩展性。即使不能,购买更多的计算机通常也比购买更多的大脑便宜!但每个模型都有假设,而就其本质而言,模型无法质疑自己的假设。这意味着模型无法从根本上给你带来惊喜。
数据科学的最后一步是交流,这是任何数据分析项目的关键部分。如果您不能将结果传达给他人,那么您的模型和可视化如何帮助您理解数据并不重要。
围绕所有这些工具的是编程。编程是一种贯穿各领域的工具,几乎在数据科学项目的每个部分都会用到。要想成为一名成功的数据科学家,你并不需要成为一名专业的程序员,但学习更多的编程知识是有回报的,因为成为一名更好的程序员可以让你更轻松地自动完成常见任务和解决新问题。
在每个数据科学项目中,你都会用到这些工具,但对于大多数项目来说,这些工具还远远不够。有一个粗略的 80/20 规则在起作用:使用本书所学的工具,你可以解决每个项目中大约 80% 的问题,但你还需要其他工具来解决剩下的 20%。在本书中,我们将为你指出可以学习更多知识的资源。
本书的编排方式
在每一章中,我们都会尽量遵循一个统一的模式:从一些激励性的例子开始,让你看到全局,然后深入细节。本书的每个章节都配有练习,帮助你实践所学知识。虽然跳过练习很有诱惑力,但没有比在实际问题中练习更好的学习方法了。
你不会学到的东西
本书未涉及的几个重要主题。我们认为,重要的是要坚持不懈地专注于基本内容,这样你才能尽快上手并运行。这意味着本书不可能涵盖所有重要主题。
建模
建模对于数据科学来说超级重要,但这是一个很大的话题,遗憾的是,我们没有足够的篇幅在此对其进行应有的介绍。要了解建模的更多信息,我们强烈推荐我们的同事 Max Kuhn 和 Julia Silge 所著的《Tidy Modeling with R》。这本书将向你介绍 tidymodels 系列软件包,正如你可能从名字中猜到的,它们与我们在本书中使用的 tidyverse 软件包共享许多约定。
大数据
本书引以为豪的主要内容是小型内存数据集。这是本书的正确起点,因为如果没有处理小数据的经验,就无法处理大数据。在本书的大部分内容中,您将学习到的工具可以轻松处理数百兆字节的数据,只要稍加注意,您通常可以使用这些工具处理几千兆字节的数据。我们还将向你展示如何从数据库和 parquet 文件中获取数据,这两种文件通常用于存储大数据。您不一定能处理整个数据集,但这不是问题,因为您只需要一个子集或子样本来回答您感兴趣的问题。
如果你经常处理较大的数据(比如 10-100 GB),我们建议你多学习 data.table。我们在这里不教它,因为它使用的界面与 tidyverse 不同,需要你学习一些不同的约定。不过,它的速度快得令人难以置信,如果你正在处理大型数据,它的性能回报值得你投入一些时间来学习。
Python、Julia 或其他语言
在本书中,你不会学到任何关于 Python、Julia 或任何其他对数据科学有用的编程语言的知识。这并不是因为我们认为这些工具不好。它们并不差!在实践中,大多数数据科学团队会混合使用多种语言,通常至少会使用 R 和 Python。但我们坚信,最好一次只掌握一种工具,而 R 就是一个很好的开始。
准备工作
为了让您从本书中获得最大的收获,我们对您已经掌握的知识做了一些假设。一般来说,你应该具备一定的数字计算能力,如果你已经有了一些基本的编程经验,会对你有所帮助。如果你以前从未做过编程,你可能会发现 Garrett 的《Hands on Programming with R》是本书的重要辅助读物。
要运行本书中的代码,你需要四样东西:R、RStudio、被称为 tidyverse 的 R 软件包集合,以及其他一些软件包。软件包是可重现 R 代码的基本单元。它们包括可重复使用的函数、描述如何使用它们的文档以及示例数据。
R
要下载 R,请访问 Rarchive 综合网络 CRAN,https://cloud.r-project.org。R 的主版本每年发布一次,次版本每年发布 2-3 次。定期更新是个好主意。升级可能有点麻烦,尤其是需要重新安装所有软件包的主要版本,但拖延只会让情况更糟。本书推荐使用 R 4.2.0 或更高版本。
RStudio
RStudio 是一个用于 R 编程的集成开发环境,您可以从 https://posit.co/download/rstudio-desktop/ 下载。RStudio 每年会更新几次,当有新版本发布时,它会自动通知你,因此无需再查看。定期升级是个好主意,这样可以利用最新、最好的功能。对于本书,请确保至少有 RStudio 2022.02.0。
启动 RStudio 时,如图 2 所示,你会看到界面中有两个关键区域:控制台窗格和输出窗格。现在,你只需在控制台窗格中键入 R 代码,然后按回车键运行即可。随着学习的深入,你会了解到更多!
RStudio IDE 有两个关键区域:在左边的控制台窗格中键入 R 代码,在右边的输出窗格中查找绘图。
整洁的世界
您还需要安装一些 R 软件包。使用软件包是成功使用 R 的关键。你将在本书中学到的大多数软件包都属于所谓的 tidyverse。tidyverse中的所有软件包在数据和R编程方面有着共同的理念,并被设计为可以协同工作。
只需一行代码,您就可以安装完整的 tidyverse:
install.packages("tidyverse")
在电脑上,在控制台中键入这行代码,然后按回车键运行。R 将从 CRAN 下载软件包并安装到电脑上。
library()``library()
在用 .NET Framework 载入软件包之前,你无法使用软件包中的函数、对象或帮助文件。安装软件包后,可以使用函数......加载它:
library(tidyverse)
#> ── Attaching core tidyverse packages ───────────────────── tidyverse 2.0.0 ──
#> ✔ dplyr 1.1.4 ✔ readr 2.1.4
#> ✔ forcats 1.0.0 ✔ stringr 1.5.1
#> ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
#> ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
#> ✔ purrr 1.0.2
#> ── Conflicts ─────────────────────────────────────── tidyverse_conflicts() ──
#> ✖ dplyr::filter() masks stats::filter()
#> ✖ dplyr::lag() masks stats::lag()
#> ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
这说明 tidyverse 加载了九个软件包:dplyr、forcats、ggplot2、lubridate、purrr、readr、stringr、tibble、tidyr。这些软件包被认为是 tidyverse 的核心,因为几乎所有分析都会用到它们。
欢迎关注 小陈的R语言笔記