R語言學(xué)習(xí)指南(3) tidyverse的基礎(chǔ)使用

tidyverse是為數(shù)據(jù)科學(xué)設(shè)計的R軟件包浊仆,它包含(ggplot2张弛、dplyr冗茸、tidyrstringrmagrittrtibble)等一系列熱門軟件包撵渡,學(xué)好tidyverse的使用可也讓你站上另一個高度,從而高效的處理數(shù)據(jù)死嗦,因此本文檔不僅僅做一些案例介紹趋距,而是希望以較為正確的學(xué)習(xí)方法來介紹R語言,使大家少走彎路越除,快速入門掌握R語言节腐。

1. 安裝tidyverse

install.packages("tidyverse")
library(tidyverse)
> library(tidyverse)
─ Attaching packages ─────────── tidyverse 1.3.0 ─
? ggplot2 3.3.2     ? purrr   0.3.4
? tibble  3.0.4     ? dplyr   1.0.2
? tidyr   1.1.2     ? stringr 1.4.0
? readr   1.4.0     ? forcats 0.5.0
─ Conflicts ──────────── tidyverse_conflicts() ─
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()

2. iris數(shù)據(jù)集

我們將使用iris(鳶尾花)數(shù)據(jù)集,因此花一點時間來熟悉一下它摘盆,加載ggplot2軟件包時翼雀,可以使用此內(nèi)置數(shù)據(jù)集。加載tidyverse軟件包將自動加載ggplot2孩擂。

View(iris)  #可以像excel一樣查看數(shù)據(jù)
iris.png
attributes(iris) #查看數(shù)據(jù)屬性
> attributes(iris)
$names
[1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width" 
[5] "Species"     

$class
[1] "data.frame"

$row.names
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16
 [17]  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32
 [33]  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48
 [49]  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64
 [65]  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80
 [81]  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96
 [97]  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112
[113] 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
[129] 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
[145] 145 146 147 148 149 150

可以看到數(shù)據(jù)有5列狼渊,150行,數(shù)據(jù)類型為數(shù)據(jù)框类垦;分別表示Sepal.Length(花萼長度)狈邑,Sepal.Width(花萼寬度)、Petal.Length(花瓣長度)蚤认,Petal.Width(花瓣寬度)米苹、Species(花的類型),其中花有3種類型(setosa砰琢、versicolor蘸嘶、virginica)

上面介紹了iris數(shù)據(jù)集良瞧,接著我們開始一些基礎(chǔ)的數(shù)據(jù)操作

3.使用dplyr對數(shù)據(jù)進行操作

3.1 select(按名稱選取列)

select(iris,Sepal.Length,Petal.Length,Species)
#為了查看方便也可以只查看前6行
head(select(iris,Sepal.Length,Petal.Length,Species))

將篩選出來的結(jié)果通過賦值操作符<-給一個變量,如下所示

p <- select(iris,Sepal.Length,Petal.Length,Species)

接著用此數(shù)據(jù)進行一個最基礎(chǔ)的可視化:
關(guān)于ggplot2的原理可參考:http://www.reibang.com/p/4da5a941e8b5

ggplot(p,aes(Sepal.Length,Petal.Length))+
  geom_point(aes(color=Species),size=2)
plot1.png
select選擇2列之間的所有列
select(iris,Sepal.Length:Petal.Length))
select選擇不在2列之間的所有列
select(iris,-(Sepal.Length:Petal.Length))

select改變列的順序

#select()與everythin()函數(shù)結(jié)合使用可以改變列的順序

select(iris,Species,Petal.Width,Sepal.Width,
       Sepal.Length,Petal.Length,everything())

3.2 filter(按值篩選行)

filter(iris,Sepal.Length >=5,Petal.Length >=2)
p1 <- filter(iris,Sepal.Length >=5,Petal.Length >=2)
ggplot(p1,aes(Sepal.Length,Petal.Length))+
  geom_point(aes(color=Species),size=2)

R中的比較運算符:>亏较、>=莺褒、<<=雪情、!=(不等于)、==(等于)
R中的邏輯運算符:&表示"與”你辣,|表示“或”巡通,!表示“非”

plot2.png

3.3 arrange(改變行順序)

#根據(jù)Petal.Width列的數(shù)據(jù)進行排序,默認為升序
arrange(iris,Petal.Width)
#desc()可以按列進行降序排序:
arrange(iris,desc(Petal.Width)))

3.5 rename(更改列名稱)

#新名稱在前舍哄,原始名稱在后
rename(iris,length=Sepal.Length)

rename(iris,replace=c("Sepal.Length"="length"))

3.6 mutate(添加新列)

mutate(iris,group ="A",Length=10)

3.7 summarize(進行分組摘要)

summarize它可以將數(shù)據(jù)框折疊成一行

summarize(iris,mean(Sepal.Length),
          sd(Sepal.Length))

3.8 group_by()

group_by可以將分析單位從整個數(shù)據(jù)集更改為單個分組

iris %>% group_by(Species) %>% 
  summarize(m = mean(Sepal.Length,na.rm=T))
# na.rm=T 表示移除缺失數(shù)據(jù)
`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 3 x 2
  Species        m
  <fct>      <dbl>
1 setosa      5.01
2 versicolor  5.94
3 virginica   6.59

3.9 %>%(管道)

利用管道可以簡化代碼,提高代碼閱讀流暢性:

p1 <- filter(iris,Sepal.Length >=5,Petal.Length >=2)
p2 <- group_by(p1,Species)
p3 <- filter(p2,Species=="virginica")
ggplot(p3,aes(Sepal.Length,Petal.Length))+
  geom_point(aes(color=Species),size=2)
iris %>% filter(Sepal.Length >=5,Petal.Length >=2) %>%
  group_by(Species) %>% filter(Species=="virginica") %>%
  ggplot(aes(Sepal.Length,Petal.Length))+
  geom_point(aes(color=Species),size=2)

這2段代碼結(jié)果相同,可以明顯看到使用了%>%減少了中間變量比伏,提高了代碼的可閱讀性

iris %>% filter(.,Sepal.Length >=5,Petal.Length >=2)

管道的原理就是將%>%左邊的變量傳遞到右邊的.處沼侣,通常在正式書寫時可省略.

3.10 count() 計算每組值的次數(shù)

iris %>% count(Species)

tidyverse中還有很多的有用的函數(shù),但是上面所述的均為在數(shù)據(jù)處理中使用頻率最高的函數(shù)蟆沫,到此為止我們已經(jīng)介紹了畫圖原理籽暇,及一系列數(shù)據(jù)處理函數(shù),下面就可以通過一系列可視化案例來不斷加深學(xué)習(xí)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饭庞,一起剝皮案震驚了整個濱河市戒悠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舟山,老刑警劉巖绸狐,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異累盗,居然都是意外死亡寒矿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門若债,熙熙樓的掌柜王于貴愁眉苦臉地迎上來符相,“玉大人,你說我怎么就攤上這事拆座≈魑。” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵挪凑,是天一觀的道長孕索。 經(jīng)常有香客問我,道長躏碳,這世上最難降的妖魔是什么搞旭? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上肄渗,老公的妹妹穿的比我還像新娘镇眷。我一直安慰自己,他們只是感情好翎嫡,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布欠动。 她就那樣靜靜地躺著,像睡著了一般惑申。 火紅的嫁衣襯著肌膚如雪具伍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天圈驼,我揣著相機與錄音人芽,去河邊找鬼。 笑死绩脆,一個胖子當(dāng)著我的面吹牛萤厅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播靴迫,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼惕味,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了矢劲?” 一聲冷哼從身側(cè)響起赦拘,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎芬沉,沒想到半個月后躺同,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡丸逸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年蹋艺,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片黄刚。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡捎谨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出憔维,到底是詐尸還是另有隱情涛救,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布业扒,位于F島的核電站检吆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏程储。R本人自食惡果不足惜蹭沛,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一臂寝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧摊灭,春花似錦咆贬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至萝挤,卻和暖如春御毅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怜珍。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凤粗,地道東北人酥泛。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像嫌拣,于是被迫代替她去往敵國和親柔袁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容