R与tidyverse——数据分析入门
2019-08-05
欢迎
简介
本书为R和tidyverse的入门向教程。教学视频在b站(还没开播,从6月中旬一直跳票至今)。答案在r-and-tidyverse-book-ans Github仓库。
本书有Gitbook版本 (https://tianyishi2001.github.io/r-and-tidyverse-book/ )和通过XeLaTeX排版的PDF版本。
如果有写得不对的地方,欢迎批判、指正。
Gitbook版本使用说明
左上角的菜单可以选择收起/展开目录,搜索,和外观,字体调整。中文衬线体使用的是思源宋体。
如果你对某一段文字有修改意见,可以选择那段文字,并通过Hypothesis留言(选择“annotate”)。右上角可以展开显示公开的留言。首次使用需要注册。
如果你熟悉Bookdown和Github,可以在此提交pull request.
为什么写本书
在下一个版本中,我会写一个序言,解释我写这本书的原因。
简而言之,是为了实现知识的自由化——我人生的大目标(前提是我还有钱恰饭)——而做的初步探索。这本书并不是我理想中知识自由的世界的产物——事实上,像我写的这种自由获取的教程并不少见——但是我还是有必要亲自体验一下写这类书时遇到的问题,和这类书的局限性。
总之,这本书只是我的一个实验品。相比于其他专业的R教程,可能并没有什么优势。但是,我会对读者负责。如果你对本书的内容有任何意见,我一定会作出回应。
本书的结构
Hadley Wickham写R for Data Science的时候把绘图放在了第一章,随后再讲加减乘除和数据处理,他认为这样可以降低新人被劝退的概率。我虽然很喜欢他的书,但是我是一个比较保守的人,所以我把所有我认为是基础的内容放在了前面。
为了防止劝退,本书的内容分为基础部分和(相对)进阶部分;基础部分的段落中会有“可酌情跳过进阶部分”的提示,以帮助你流畅地看完基础部分。仅阅读基础部分即可学到最重要的知识;如学有余力可阅读进阶部分。
在本书你不会学到:
- 详细的统计学方法。我本身数学很差,教这个是要谢罪的。
- Python (NumPy/SciPy)。在数据挖掘/数据分析领域,Python和R一样是我们的好伙伴,而且它们经常被联合使用。但是本书作为R的入门教程,应当专注于R。
- SAS, SPSS, STATA等软件(包括它们与R的协同使用)。
版权页
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。
关于编写本书的技术信息
本书以R Markdown格式 (http://rmarkdown.rstudio.com/ )在RStudio (http://www.rstudio.com/ide/ )中编写。
knitr (http://yihui.name/knitr/ )和pandoc (https://pandoc.org/ )把Rmd文件编译成html和tex,
XeLaTeX将tex排版为PDF;这一系列操作是使用bookdown (https://bookdown.org )自动完成的。
本书的源码,Gitbook和PDF版本的书保存在https://github.com/TianyiShi2001/r-and-tidyverse-book/ ,其中Gitbook和PDF保存在/docs/
目录下,由GitHub Pages生成静态网页,通过https://TianyiShi2001.github.io/r-and-tidyverse-book/ 访问。
编写本书使用的R packages,和排版本书时R的sessionInfo显示如下:
utils::sessionInfo(c("tibble", "dplyr", "forcats", "ggplot2", "stringr", "tidyr", "readr", "purrr", "lubridate", "doParallel", "foreach", "rmarkdown", "knitr", "bookdown"))
#> R version 3.5.3 (2019-03-11)
#> Platform: x86_64-apple-darwin15.6.0 (64-bit)
#> Running under: macOS 10.15
#>
#> Matrix products: default
#> BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
#> LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
#>
#> locale:
#> [1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
#>
#> attached base packages:
#> character(0)
#>
#> other attached packages:
#> [1] tibble_2.1.3 dplyr_0.8.3 forcats_0.4.0
#> [4] ggplot2_3.2.0 stringr_1.4.0 tidyr_0.8.3
#> [7] readr_1.3.1 purrr_0.3.2 lubridate_1.7.4
#> [10] doParallel_1.0.14 foreach_1.4.4 rmarkdown_1.13.6
#> [13] knitr_1.23 bookdown_0.11
#>
#> loaded via a namespace (and not attached):
#> [1] tidyselect_0.2.5 xfun_0.8 haven_2.1.1 lattice_0.20-38
#> [5] colorspace_1.4-1 generics_0.0.2 htmltools_0.3.6 yaml_2.2.0
#> [9] grDevices_3.5.3 rlang_0.4.0 pillar_1.4.2 glue_1.3.1
#> [13] withr_2.1.2 tidyverse_1.2.1 modelr_0.1.4 readxl_1.3.1
#> [17] munsell_0.5.0 gtable_0.3.0 cellranger_1.1.0 rvest_0.3.4
#> [21] codetools_0.2-16 evaluate_0.14 parallel_3.5.3 broom_0.5.2
#> [25] methods_3.5.3 Rcpp_1.0.1 scales_1.0.0 backports_1.1.4
#> [29] jsonlite_1.6 stats_3.5.3 datasets_3.5.3 graphics_3.5.3
#> [33] hms_0.4.2 digest_0.6.20 stringi_1.4.3 grid_3.5.3
#> [37] cli_1.1.0 tools_3.5.3 magrittr_1.5 lazyeval_0.2.2
#> [41] crayon_1.3.4 pkgconfig_2.0.2 xml2_1.2.0 utils_3.5.3
#> [45] assertthat_0.2.1 base_3.5.3 httr_1.4.0 rstudioapi_0.10
#> [49] iterators_1.0.10 R6_2.4.0 nlme_3.1-140 compiler_3.5.3