前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新书《R语言编程—基于tidyverse》信息汇总

新书《R语言编程—基于tidyverse》信息汇总

作者头像
庄闪闪
发布2021-09-14 10:54:20
2.2K0
发布2021-09-14 10:54:20
举报

简介

我之前预告过的 R 语言新书,起名为《R语言编程—基于tidyverse》,本书的目的是为了在国内推广 R 语言和 R 语言最新技术。本书非常适合新手 R 语言入门,老手 R 知识汰旧换新。

本书的 Github[1]Gitee[2] 地址(暂时只上传部分已完成的 pdf 版,可前去下载)。

作者序

R 语言是专业的统计编程语言,具有顶尖水准的绘图功能,且开源免费有着丰富的扩展包和活跃的社区。R语言这些优质的特性,使得它始终在数据统计分析领域的 SAS、Stata、SPSS、Python、Matlab 等同类软件中占据领先地位。

R 语言曾经最为人们津津乐道的是Hadley大神开发的 ggplot2 包,泛函式图层化语法赋予了绘图一种“优雅” 美。近年来,R 语言在国外蓬勃发展,ggplot2 这个“点”在2016年以来,已被Hadley 大神“连成线、张成面、形成体(系)”,这就是 tidyverse 包,集

数据导入—数据清洗— 数据操作— 数据可视化—数据建模—可重现与交互报告

整个数据科学流程于一身,而且是以“现代的”、“优雅的” 方式,以管道式、泛函式编程技术实现。不夸张地说,tidyverse 操作数据比 pandas 更加好用、易用!再加上可视化本来就是 R 所擅长,可以说 R 在数据科学领域好于 Python

这种整洁、优雅的 tidy- 流,又带动了 R 语言在很多研究领域涌现出了一系列tidy-风格的包:tidymodels(统计与机器学习)、mlr3verse(机器学习)、rstatix(应用统计) 、tidybayes(贝叶斯模型)、tidyquant(金融) 、fpp3(时间序列)、tidytext(文本挖掘)、tidygraph(网络图)、sf(空间数据分析)、tidybulk(生信)、sparklyr(大数据)等。

其中机器学习/数据挖掘领域,曾经的 R 靠单打独斗的包,如今也正在从整合技术上迎头赶上 Python,出现了 tidy- 风格的 tidymodels 包,以及真正最新理念、最新技术、最新一代的机器学习 mlr3verse 包,它比 sklearn 还先进,基于 R6 类面向对象,data.table 神速数据底层,开创性的 Graph- 流模式(图/网络流,区别于通常的线性流)。

写作本书的目的

然而,我发现这些近几年出现的 R 语言新技术,在国内很少有人问津,绝大多数 R 语言的教师、教材、博客文章、R 学习者仍在沿用那些过时的、晦涩的 R 语法,对 R 语言的印象停留在 5 年前:语法晦涩难懂、速度慢,做统计分析和绘图还行,机器学习只有单独算法的包,做不了深度学习、大数据、工业部署……

有感于此,我想写一本用最新 R 技术,方便新手真正快速入门 R 语言编程的书,来为 R 语言正名,以在国内推广已如此优秀好用的 R 语言。

我是一名大学数学教师,热爱编程、热爱R语言,奉行终生学习理念,一直喜欢跟踪和学习新知识、新技能。我对编程和 R 语言有一些独到的理解体会,因为我觉得数学语言与编程语言是相通的,都是用语法元素来表达和解决问题,我想把这些理解体会用符合国人的语言习惯表达出来。

希望我这本书,如果有幸进入了您的法眼,能让您学到正确的编程思想,学到最新的 R 语言编程知识和编程思维,能真正让您完成 R 语言入门或 R 知识汰旧换新。

本书主要适合以下读者:

  • 没有 R 语言基础,想要系统地学习 R 语言编程,特别是想要用最新 R 技术入门 R
  • 具备一定的 R 语言基础,想升级 R 语言编程技术到最新
  • 想要理解编程思想,锻炼向量化、函数式编程思维,以及真正的数据思维
  • 想要以 R 作为工具,将来从事统计分析、数据挖掘、机器学习,特别是想使用最新机器学习包:tidymodels, mlr3verse
  • 高校学习 R 语言及相关课程的学生、教师、科研人员,特别是将来想要在时间序列、金融、空间数据分析等领域,使用最新包 fpp3, tidyquant, sf

本书特色

1. 新

本书绝大部分内容都是参阅最新版本R包的相关文档,很少参阅书籍(而且尽量参阅最新的在线版本)。本书全面采用最新的R语言技术编写,特别是 tidyverse “整洁流、管道流、泛函流”数据科学。

2. 真正融入编程思维

很多国内 R 语言编程书只是罗列堆砌编程语法,国外有不少优秀的 R 语言编程书,但翻译版往往就只是 “直译”,只把表面意思用生硬的汉语表达出来,很难让初学者学透它们。解决办法就是真正融入编程思维:编程思想引导,编程语法到底是怎么回事,应该用于何处、怎么使用。本书前言和第一章融入向量化编程函数式编程思维;第二章主要融入数据思维

我写东西的特点就是,每个知识点都搜集很多相关最新资料,自己先学得透彻明白,再把自己的理解用最通俗易懂语言表达出来。看过我知乎专栏文章的人,应当对此有所体会。

3. 精心准备实例

编程语法讲透彻还不够,必须配以合适的实例来演示,所以也请读者一定要将编程语法讲解与配套实例结合起来阅读,比起实例代码调试通过,更重要的是借助实例代码理解透彻该编程语法,所包含的编程思维。本书后半部分是R语言在应用统计、探索性数据分析、文档沟通方面的应用,所配案例力求能让读者上手使用。

4. 程序代码优雅、简洁、高效

本书程序代码都是基于最新的 tidyverse,自然就很优雅;简洁高效是能用向量化编程就不用逐元素,能用泛函式编程,就不用 for 循环。

可以说,读者如果用我这本书入门 R 语言,或者更新您的 R 知识,就会自动跳过写低级啰嗦代码的阶段,直接进入写让别人羡慕的 “高手级” 代码的行列。

本书内容安排

本书的结构是围绕如何学习 R 语言编程来展开的,全书共分为 6 章。

冯国双老师在《白话统计》序言中写道:

一本书如果没有作者自己的观点,而只是知识的堆叠,那么这类书是没有太大价值的.

尤其在当前网络发达的时代,几乎任何概念和知识点都可以从网络上查到。但有一点您很难查到,对于编程书来说,那就是编程思维。本书最大的特点之一就是无论是讲编程思想还是讲编程语法知识点,都把编程思维融入进去。

很多人学编程始终难以真正入门:自己写代码;学习编程语言在其编程思想的指导下才能事半功倍。本书的前言就先来谈编程思维,包括如何理解编程语言,用数学建模的思维引领读者跨越如何从实际问题到自己写代码解决问题,以及R语言的编程思想:面向函数、面向对象、面向向量。

第一:讲述 R 语言编程的基本语法

同时渗透向量化编程、函数式编程思维。这些语法在其它编程语言中也是相通的,包括搭建 R 语言环境,常用数据结构(存放数据的容器) :向量、矩阵、数据框、因子、字符串(及正则表达式) 、日期时间,分支结构,循环结构,自定义函数。这些基本语法是您写 R 代码的基本元素,学透它们非常重要,只有学透它们才能将其任意组合、恰当使用,以写出各种各样的解决具体问题的 R 代码。同样是讲 R 基本语法,本书不同之处在于,用tidyverse中更一致、更好用的相应包加以代替:用tibble代替data.frame、用forcats包处理因子,用stringr讲字符串 (及正则表达式)、用lubridate包讲日期时间、循环结构中用purrr包的map_*函数代替apply系列函数,其中特别讲到编程技术:泛函式编程。

第二章:正式进入tidyverse核心部分:数据操作,侧重讲解数据思维

先简单介绍 tidyverse包以及编程技术之管道操作,接着围绕各种常用数据操作展开,包括数据读写(各种常见数据文件的读写及批量读写、R连接数据库、中文编码问题及解决办法),数据连接(数据按行/列拼接、SQL数据库连接),数据重塑 (“脏”数据变“整洁”数据,长宽表转换、拆分与合并列),数据操作 (选择列、筛选行、对行排序、修改列、分组汇总)、其它数据操作 (按行汇总、窗口函数、滑窗迭代、整洁计算),以及data.table基本使用 (常用数据操作的dplyr语法与data.table语法对照)。tidyverse最大的优势就是以“管道流”、“整洁语法”操作数据,这些语法真正让数据操作从R base的晦涩难记难用,到tidyverse的“一致”、“整洁”好记好用,比Pythonpandas还好用!关键是用一次就能记住!为了最大程度地降低理解负担,本书特意选用中文的学生成绩数据作为演示数据,让读者只关心语法就好。另外,tidyverse 的这些数据操作,实际上已经在语法层面涵盖了日常Excel数据操作、SQL数据库操作,活用tidyverse上述数据操作语法已经可以胜任这些工作。

第三章:可视化与建模技术

可视化只介绍最流行的可视化包ggplot2,先从 ggplot2的图层化绘图语法开始,依次介绍ggplot2的九大部件:数据、映射、几何对象、标度、统计变换、坐标系、分面、主题、输出;接着介绍图形从功能上的分类:类别比较图、数据关系图、数据分布图、时间序列图、局部整体图、地理空间图,对每一类图形分别选择其中代表性的用实例加以演示。建模技术包括三个内容:

(1) 用broom包提取统计模型结果为整洁数据框,方便后续访问和使用;

(2) modelr包中一些有用的辅助建模函数;

(3) 批量建模技术,比如要对全世界 170 多个国家的数据分别建立模型、提取模型结果,当然这可以用for 循环实现,但这里采用更加优雅的map_*实现,以及“行化迭代”实现。

第四章,应用统计

R语言是专业的统计分析软件,广泛应用于统计分析与计算。本章将从四个方面展开:

(1) 描述性统计,介绍适合描述不同数据的统计量、统计图、列联表;

(2) 参数估计,主要介绍点估计与区间估计,包括Bootstrap法估计置信区间,以及常用的参数估计方法:最小二乘估计、最大似然估计;

(3) 假设检验,将介绍假设检验原理,基于理论的假设检验:以方差分析、卡方检验为例,并用整洁的rstatix包实现,以及基于重排的假设检验:以 t 检验为例,用最新的infer包实现;

(4) 回归分析,从线性回归原理、回归诊断,借助具体实例讲解多元线性回归的整个过程,并介绍广泛应用于机器学习的梯度下降法,以及广义线性模型原理。

第五章,探索性数据分析

主要讨论三方面内容:

(1) 数据清洗,包括缺失值探索与处理、异常值识别与处理;

(2) 特征工程,包括特征缩放(标准化/归一化/行规范化/数据平滑)、特征变换(非线性特征/正态性变换/连续变量离散化)、基于PCA的特征降维;

(3) 探索变量间的关系,包括分类变量之间、分类变量与连续变量、连续变量之间的关系。

第六章,文档沟通

将讨论如何进行可重复研究,用R markdown家族生成各种文档,介绍 R markdown的基本使用,RLatex 交互编写期刊论文/幻灯片/书籍、RGit/Github交互进行版本控制、用R Shiny 轻松制作交互网络应用程序(Web app)以及开发和发布R包的最新工作流程。

附录

部分是正文内容的补充和扩展,将分别介绍R6类面向对象编程、实现Excel中的VLOOKUP与透视表、R网络爬虫、R高性能计算、R最新机器学习框架:mlr3verse, tidymodels.

大家可以根据自己的需求选择阅读侧重点,不过我还是希望您能够按照顺序完整地阅读,这样才能让您彻底地更新一遍您的 R 知识,避免R basetidyverse 混着用,因为二者在写 R 代码上不是一个思维,强行搭在一起处处透着别扭,且事倍功半。

本书所用的软件

本书使用最新版本的R语言4.1.1RStudio 1.4,主要使用的R包是tidyverse 1.3.1系列。

本书目录

本书部分内容的知乎链接

第01篇 前言Ⅰ—谈如何学习编程语言[3]

第02篇 前言Ⅱ—R语言简介[4]

第03篇 前言Ⅲ—R语言编程思想[5]

第04篇 1.1 搭建 R 环境及常用操作[6]

第05篇 1.2 数据结构Ⅰ:向量、矩阵、多维数组[7]

第06篇 1.3 数据结构Ⅱ:列表、数据框、因子[8]

第07篇 1.4 数据结构Ⅲ:字符串、日期时间[9]

第08篇 1.5 正则表达式[10]

第09篇 1.6 控制结构[11]

第10篇 1.7 自定义函数[12]

第11篇 2.1 tidyverse简介与管道[13]

第12篇 2.2 数据读写[14]

第13篇 2.3 数据连接[15]

第14篇 2.4 数据重塑[16]

第15 篇 2.5 数据操作[17]

第16篇 2.6 其它数据操作[18]

第17篇 2.7 数据处理神器:data.table包[19]

第18篇 3.1 ggplot2 基础语法[20]

第19篇 3.2 ggplot2 图形示例[21]

第20篇 3.3 统计建模技术[22]

本书已与人民邮电出版社签订出版合同,有纸质书、电子书,预计 2021 年年底能与读者见面。也因此,后续内容不再全文更新,出版环境使然,请大家理解!

小编有话说

  • 小编也非常期待这本新书的出版,尝鲜阅读可以关注张老师的知乎(原文直达),或者点击上面内通的链接,当然也可以加入对应的读者交流群噢!

本文转自知乎「《R语言编程—基于tidyverse》新书信息汇总」——张敬信[23]

参考资料

[1]

Github: https://link.zhihu.com/?target=https%3A//github.com/zhjx19/introR

[2]

Gitee: https://link.zhihu.com/?target=https%3A//github.com/zhjx19/introR

[3]

前言Ⅰ—谈如何学习编程语言: https://zhuanlan.zhihu.com/p/198196432

[4]

前言Ⅱ—R语言简介: https://zhuanlan.zhihu.com/p/198860434

[5]

前言Ⅲ—R语言编程思想: https://zhuanlan.zhihu.com/p/198869563

[6]

1.1 搭建 R 环境及常用操作: https://zhuanlan.zhihu.com/p/201425580

[7]

1.2 数据结构Ⅰ:向量、矩阵、多维数组: https://zhuanlan.zhihu.com/p/201474611

[8]

1.3 数据结构Ⅱ:列表、数据框、因子: https://zhuanlan.zhihu.com/p/203738481

[9]

1.4 数据结构Ⅲ:字符串、日期时间: https://zhuanlan.zhihu.com/p/203775397

[10]

1.5 正则表达式: https://zhuanlan.zhihu.com/p/219681623

[11]

1.6 控制结构: https://zhuanlan.zhihu.com/p/226118031

[12]

1.7 自定义函数: https://zhuanlan.zhihu.com/p/226165409

[13]

2.1 tidyverse简介与管道: https://zhuanlan.zhihu.com/p/243376822

[14]

2.2 数据读写: https://zhuanlan.zhihu.com/p/256284851

[15]

2.3 数据连接: https://zhuanlan.zhihu.com/p/259314045

[16]

2.4 数据重塑: https://zhuanlan.zhihu.com/p/262051689

[17]

2.5 数据操作: https://zhuanlan.zhihu.com/p/262230298

[18]

2.6 其它数据操作: https://zhuanlan.zhihu.com/p/268515699

[19]

2.7 数据处理神器:data.table包: https://zhuanlan.zhihu.com/p/343113981

[20]

3.1 ggplot2 基础语法: https://zhuanlan.zhihu.com/p/344267245

[21]

3.2 ggplot2 图形示例: https://zhuanlan.zhihu.com/p/346084004

[22]

3.3 统计建模技术: https://zhuanlan.zhihu.com/p/346700620

[23]

知乎「《R语言编程—基于tidyverse》新书信息汇总」——张敬信: https://zhuanlan.zhihu.com/p/198185888?utm_source=wechat_session&utm_medium=social&utm_oi=814968884565282816

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 庄闪闪的R语言手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作者序
  • 写作本书的目的
  • 本书主要适合以下读者:
  • 本书特色
  • 本书内容安排
  • 本书所用的软件
  • 本书目录
  • 本书部分内容的知乎链接
  • 小编有话说
    • 参考资料
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档