接著我們要介紹的是 dplyr() 套件,相較於原生的資料處理語法, dplyr() 套件中融入 ... 在 select() 函數中我們輸入資料框的名稱,以及想要選取的變數名稱,舉例來說 ...
認識R的美好
1關於
1.1關於作者
1.2關於R語言
1.3關於本書
1.3.1您能夠從本書獲得什麼
1.3.2前提
2容易安裝的開發環境
2.1安裝R
2.2安裝RStudio
2.3RStudio介面導覽
2.4關於套件
2.5常見問題
2.5.1語系的設定
2.5.2開啟R程式碼檔案為何是亂碼
2.5.3Windows不要設定中文使用者名稱
2.5.4R和RStudio不要安裝在Windows的OneDrive資料夾
2.6隨堂練習
2.7延伸閱讀
3快速入門
3.1使用%運算子
6資料處理利器:dplyr
6.1安裝與載入
6.2常用函數
6.3gapminder資料
6.4檢視gapminder資料
6.5篩選符合條件的觀測值
6.6選擇變數
6.7新增衍生變數
6.8依照變數排序觀測值
6.9聚合變數
6.10依照類別變數分組
7靜態視覺化入門:ggplot2
7.1安裝與載入
7.2常用的基本圖形
7.3散佈圖
7.4線圖
7.5直方圖
7.6盒鬚圖
7.7長條圖
7.8mac顯示中文
7.9延伸閱讀
8精簡的變數型別
8.1暸解不同的變數型別
8.2數值
8.3整數
8.4邏輯值
8.5文字
8.5.1日期
8.6時間
8.7數學運算
8.8變數型別的判斷與轉換
8.8.1變數型別的判斷
8.8.2變數型別的轉換
9三心二意
9.1兩個分支
9.2三個分支
9.3四個分支或更多
10多樣的資料結構:向量與因素向量
10.1R語言三大資料結構
10.2向量
10.3因素向量
10.4互動練習題
11懶人的最愛:for迴圈
11.1印出12個月的月份名稱
11.2for迴圈
12懶人的最愛:while迴圈
12.1兩種迴圈的運用時機
13多樣的資料結構:矩陣、資料框與更多
13.1矩陣
13.2資料框
索引
Publishedwithbookdown
認識R的美好
6資料處理利器:dplyr
接著我們要介紹的是dplyr()套件,相較於原生的資料處理語法,dplyr()套件中融入很多概念與結構化查詢語言(StructuredQueryLanguage,SQL)相仿的函數。
搭配%>%運算子一起使用,能夠讓我們整理資料的能力獲得一個檔次的提升!
6.1安裝與載入
使用之前,必須要安裝和載入dplyr這個套件:
#安裝dplyr套件---------
install.packages("dplyr")
#安裝dplyr套件---------
library(dplyr)
6.2常用函數
我們將dplyr()套件提供的常用函數整理如下表:
filter()
篩選符合條件的觀測值
select()
選擇變數
mutate()
新增衍生變數
arrange()
依照變數排序觀測值
summarise()
聚合變數
group_by()
依照類別變數分組,常搭配summarise()函數
6.3gapminder資料
我們要使用dplyr套件處理的資料源自於一個非常有名的TED演講:
Thebeststatsyou’veeverseen
或者可以看一個簡短版的BBC剪輯:
HansRosling’s200Countries,200Years,4Minutes-TheJoyofStats
在R語言中gapminder資料可以透過安裝載入gapminder套件獲得:
#安裝gapminder套件---------
install.packages("gapminder")
#載入gapminder套件---------
library(gapminder)
6.4檢視gapminder資料
透過head()與str()檢視gapminder資料:
#載入gapminder套件---------
library(gapminder)
#檢視gapminder資料
head(gapminder)
###Atibble:6x6
##countrycontinentyearlifeExppopgdpPercap
##
##1AfghanistanAsia195228.8018425333779.4453
##2AfghanistanAsia195730.3329240934820.8530
##3AfghanistanAsia196231.99710267083853.1007
##4AfghanistanAsia196734.02011537966836.1971
##5AfghanistanAsia197236.08813079460739.9811
##6AfghanistanAsia197738.43814880372786.1134
str(gapminder)
##Classes'tbl_df','tbl'and'data.frame':1704obs.of6variables:
##$country:Factorw/142levels"Afghanistan",..:1111111111...
##$continent:Factorw/5levels"Africa","Americas",..:3333333333...
##$year:int1952195719621967197219771982198719921997...
##$lifeExp:num28.830.3323436.1...
##$pop:int842533392409341026708311537966130794601488037212881816138679571631792122227415...
##$gdpPercap:num779821853836740...
6.5篩選符合條件的觀測值
在filter()函數中我們輸入要篩選的資料框,以及依據什麼條件進行篩選,舉例來說我們可以將gapminder中2007年的資料篩選出來:
library(gapminder)
library(dplyr)
library(magrittr)
gapminder%>%
filter(year==2007)
###Atibble:142x6
##countrycontinentyearlifeExppopgdpPercap
##
##1AfghanistanAsia200743.82831889923974.5803
##2AlbaniaEurope200776.42336005235937.0295
##3AlgeriaAfrica200772.301333332166223.3675
##4AngolaAfrica200742.731124204764797.2313
##5ArgentinaAmericas200775.3204030192712779.3796
##6AustraliaOceania200781.2352043417634435.3674
##7AustriaEurope200779.829819978336126.4927
##8BahrainAsia200775.63570857329796.0483
##9BangladeshAsia200764.0621504483391391.2538
##10BelgiumEurope200779.4411039222633692.6051
###...with132morerows
6.6選擇變數
在select()函數中我們輸入資料框的名稱,以及想要選取的變數名稱,舉例來說我們可以將gapminder中的country篩選出來:
gapminder%>%
filter(year==2007)%>%
select(country)
###Atibble:142x1
##country
##
##1Afghanistan
##2Albania
##3Algeria
##4Angola
##5Argentina
##6Australia
##7Austria
##8Bahrain
##9Bangladesh
##10Belgium
###...with132morerows
6.7新增衍生變數
利用mutate()函數新增衍生變數,舉例來說,我們要在gapminder資料框中新增衍生變數pop_in_thousands:
gapminder%>%
mutate(pop_in_thousands=pop/1000)
###Atibble:1,704x7
##countrycontinentyearlifeExppopgdpPercappop_in_thousands
##
##1AfghanistanAsia195228.8018425333779.44538425.333
##2AfghanistanAsia195730.3329240934820.85309240.934
##3AfghanistanAsia196231.99710267083853.100710267.083
##4AfghanistanAsia196734.02011537966836.197111537.966
##5AfghanistanAsia197236.08813079460739.981113079.460
##6AfghanistanAsia197738.43814880372786.113414880.372
##7AfghanistanAsia198239.85412881816978.011412881.816
##8AfghanistanAsia198740.82213867957852.395913867.957
##9AfghanistanAsia199241.67416317921649.341416317.921
##10AfghanistanAsia199741.76322227415635.341422227.415
###...with1,694morerows
6.8依照變數排序觀測值
利用arrange()函數依指定的變數來排序觀測值,舉例來說以year變數來排序gapminder:
gapminder%>%
arrange(year)
###Atibble:1,704x6
##countrycontinentyearlifeExppopgdpPercap
##
##1AfghanistanAsia195228.8018425333779.4453
##2AlbaniaEurope195255.23012826971601.0561
##3AlgeriaAfrica195243.07792795252449.0082
##4AngolaAfrica195230.01542320953520.6103
##5ArgentinaAmericas195262.485178769565911.3151
##6AustraliaOceania195269.120869121210039.5956
##7AustriaEurope195266.80069277726137.0765
##8BahrainAsia195250.9391204479867.0848
##9BangladeshAsia195237.48446886859684.2442
##10BelgiumEurope195268.00087304058343.1051
###...with1,694morerows
6.9聚合變數
在summarise()函數中我們輸入想要聚合的變數名稱與聚合公式,聚合運算的結果通常是一個數字,代表某個數列的運算結果,像是總和、平均數或標準差都是聚合運算的結果,舉例來說,我們可以運算gapminderˋ中2007年全球的人口數:
gapminder%>%
filter(year==2007)%>%
summarise(ttl_pop=sum(as.numeric(pop)))
###Atibble:1x1
##ttl_pop
##
##16251013179
6.10依照類別變數分組
聚合函數的運算常常會搭配group_by()函數一起使用,這時我們就可以整合%>%運算子,舉例來說,我們可以計算gapminder中2007年各洲的人口數:
gapminder%>%
filter(year==2007)%>%
group_by(continent)%>%
summarise(ttl_pop=sum(as.numeric(pop)))
###Atibble:5x2
##continentttl_pop
##
##1Africa929539692
##2Americas898871184
##3Asia3811953827
##4Europe586098529
##5Oceania24549947