1.數(shù)據(jù)處理
1.1 數(shù)據(jù)導(dǎo)入
將數(shù)據(jù)導(dǎo)入R。這實(shí)際上就是讀取保存在文件、數(shù)據(jù)庫或Web API 中的數(shù)
據(jù),再加載到R 的數(shù)據(jù)框中。
1.2 數(shù)據(jù)整理
導(dǎo)入數(shù)據(jù)后,就應(yīng)該對數(shù)據(jù)進(jìn)行整理。數(shù)據(jù)整理就是將數(shù)據(jù)保存為一致的形式,以滿足其所在數(shù)據(jù)集在語義上的要求。簡而言之,如果數(shù)據(jù)是整潔的,那么每列都是一個(gè)變量,每行都是一個(gè)觀測。整潔的數(shù)據(jù)非常重要,因?yàn)橐恢碌臄?shù)據(jù)結(jié)構(gòu)可以讓你將工作重點(diǎn)放在與數(shù)據(jù)有關(guān)的問題上,而不用再費(fèi)盡心思地將數(shù)據(jù)轉(zhuǎn)換為各種形式以適應(yīng)不同的函數(shù)。一旦擁有了整潔的數(shù)據(jù),通常下一步就是對數(shù)據(jù)進(jìn)行轉(zhuǎn)換。數(shù)據(jù)轉(zhuǎn)換包括選取出感興趣的觀測(如居住在某個(gè)城市里的所有人,或者去年的所有數(shù)據(jù))、使用現(xiàn)有變量創(chuàng)建新變量(如根據(jù)距離和時(shí)間計(jì)算出速度),以及計(jì)算一些摘要統(tǒng)計(jì)量(如計(jì)數(shù)或均值)。數(shù)據(jù)整理和數(shù)據(jù)轉(zhuǎn)換統(tǒng)稱為數(shù)據(jù)處理。
1.3 可視化與建模
一旦使用需要的變量完成了數(shù)據(jù)整理,那么生成知識的方式主要有兩種:可視化與建模。這兩種方式各有利弊,相輔相成。因此,所有實(shí)際的數(shù)據(jù)分析過程都要在這兩種方式間多次重復(fù)。
- 可視化本質(zhì)上是人類活動(dòng)。良好的可視化會(huì)讓你發(fā)現(xiàn)意料之外的現(xiàn)象,或?qū)?shù)據(jù)提出新的問題。你還可以從良好的可視化中意識到自己提出了錯(cuò)誤的問題,或者需要收集不同的數(shù)據(jù)。可視化能夠帶給你驚喜,但不要期望過高,因?yàn)楫吘惯€是需要人來對其進(jìn)行解釋。
- 模型是彌補(bǔ)可視化缺點(diǎn)的一種工具。如果已經(jīng)將問題定義得足夠清晰,那么你就可以使用一個(gè)模型來回答問題。因?yàn)槟P捅举|(zhì)上是一種數(shù)學(xué)工具或計(jì)算工具,所以它們的擴(kuò)展性一般非常好。即使擴(kuò)展性出現(xiàn)問題,購買更多計(jì)算機(jī)也比雇用更多聰明的人便宜!但是每個(gè)模型都有前提假設(shè),而且模型本身不會(huì)對自己的前提假設(shè)提出疑問,這就意味著模型本質(zhì)上不能給你帶來驚喜。
1.4 溝通
數(shù)據(jù)科學(xué)的最后一個(gè)步驟就是溝通。對于任何數(shù)據(jù)分析項(xiàng)目來說,溝通絕對是一個(gè)極其重要的環(huán)節(jié)。如果不能與他人交流分析結(jié)果,那么不管模型和可視化讓你對數(shù)據(jù)理解得多么透徹,這都是沒有任何實(shí)際意義的。
1.5 編程
圍繞在這些技能之外的是編程。編程是貫穿數(shù)據(jù)科學(xué)項(xiàng)目各個(gè)環(huán)節(jié)的一項(xiàng)技能。數(shù)據(jù)科學(xué)家不一定是編程專家,但掌握更多的編程技能總是有好處的,因?yàn)檫@樣你就能夠?qū)θ粘H蝿?wù)進(jìn)行自動(dòng)處理,并且非常輕松地解決新的問題。
2.tidyverse簡介
https://www.tidyverse.org/
http://tidyverse.tidyverse.org
https://github.com/tidyverse/tidyverse
Report bugs at https://github.com/tidyverse/tidyverse/issues
tidyverse是為數(shù)據(jù)科學(xué)而設(shè)計(jì)的R軟件包的自以為是的集合。 所有軟件包都共享基本的設(shè)計(jì)理念,語法和數(shù)據(jù)結(jié)構(gòu)。
使用以下命令安裝完整的tidyverse:
2.1 安裝
# Install from CRAN
install.packages("tidyverse")
# Or the development version from GitHub
# install.packages("devtools")
devtools::install_github("tidyverse/tidyverse")
2.2 加載
library(tidyverse)
#> ── Attaching packages ────────────────────────────────────────────────── tidyverse 1.2.1.9000 ──
#> ? ggplot2 3.2.1 ? purrr 0.3.3
#> ? tibble 2.1.3 ? dplyr 0.8.3
#> ? tidyr 1.0.0.9000 ? stringr 1.4.0
#> ? readr 1.3.1 ? forcats 0.4.0
#> ── Conflicts ────────────────────────────────────────────────────────── tidyverse_conflicts() ──
#> x dplyr::filter() masks stats::filter()
#> x dplyr::lag() masks stats::lag()
3 tidyverse包分類
3.1 數(shù)據(jù)導(dǎo)入
- readr
read_csv(); read_tsv(); read_delim(); read_fwf(); read_table(); read_log(); - readxl
read_xls(); read_xlsx(); - haven
打開SAS 、SPSS、Stata等外部數(shù)據(jù)
3.2 數(shù)據(jù)整理
- tibble
對data.frame的改進(jìn),一種數(shù)據(jù)格式 - tidyr
清洗數(shù)據(jù) gather(); spread();
3.3 數(shù)據(jù)轉(zhuǎn)換
- dplyr
處理數(shù)據(jù) mutate();select(); filter(); summarise();arrange(); - lubridate
處理時(shí)間數(shù)據(jù) - stringr
處理字符串類型 - forcats
處理因子變量(factors)
3.4 數(shù)據(jù)可視化
- ggplot2
R016 ggplot2(01) 圖形語法
R017 ggplot2(02) 快速繪圖qplot()
R018 ggplot2(03) 箱線圖及小提琴圖
R019 ggplot2(04) 點(diǎn)圖與散點(diǎn)圖
R020 ggplot2(05) 直方圖,條形圖
R021 ggplot2(06) 線圖,密度圖,qq圖,ECDF圖
R022 ggplot2(07) 誤差圖,餅圖
R023 ggplot2(08) 組合圖形
R027 ggplot2繪圖參數(shù) — 標(biāo)題及圖例
3.5 編程
- magrittr
管道運(yùn)算符 - purr
通過提供一些完整連貫用于函數(shù)和向量的工具集,增強(qiáng)R的函數(shù)編程。