超級(jí)好用的dplyr慌盯, 讓你從數(shù)據(jù)小白跨出一大步。
以下內(nèi)容主要來自 R for data science 書第五章內(nèi)容前半部分掂器,主要講幾個(gè)基本命令(filter亚皂、arrange、select 国瓮、mutate灭必、summarise)的操作狞谱。
1.載入需要的R包
library(tidyverse) #dplyr包已經(jīng)被整合入tidyverse包
library(nycflights13) #載入這個(gè)包主要是用里面的示例數(shù)據(jù)做分析
2.使用命令
- filter 按照條件過濾數(shù)據(jù)
- arrange 排序
- select 按照列名選擇變量。功能強(qiáng)大禁漓,可使用正則表達(dá)式跟衅。
- mutate 基于現(xiàn)有變量創(chuàng)造新變量
- summarise 匯總統(tǒng)計(jì)數(shù)據(jù),常和分組命令(groupby)一起使用
3.filter
過濾樣本播歼,可結(jié)合邏輯變量一起使用:
-
&
代表 和 -
|
代表 或 -
!
代表 非 -
%in%
代表 是否被包含伶跷。 如1 %in% c(1,2)
代表1是否包含于 c(1,2)。該命令會(huì)返回True秘狞。
#篩選出1月1號(hào)的航班
filter(flights, month==1, day==1)
#篩選出1月或2月的航班
filter(flights, month==1 | month==2)
#篩選出不在1月或2月的航班
filter(flights, !(month==1 | month==2))
4.arrange
排序叭莫。
- 可按多個(gè)關(guān)鍵字排序,從前到后由主到次烁试。
- 默認(rèn)升序雇初,降序需要在排序變量外加desc,如:
desc(month)
#按時(shí)間順序由前到后排序
arrange(filter, year, month, day)
#按航班延誤時(shí)間有多到少排序
arrange(flights, desc(arr_delay))
5.select
按變量名選擇子數(shù)據(jù)框
- 使用
:
可以連續(xù)選取 - 使用
-
可刪除指定變量 -
starts_with()
,end_with()
,contains()
分別代表選取以指定字符開始廓潜、以指定字符結(jié)尾抵皱,包含指定字符的變量名善榛。 -
matches()
可使用正則表達(dá)式匹配變量名
#選取變量名以“d”開頭的變量
select(flights, ends_with("d"))
#選取變量名以“time”結(jié)尾的變量
select(flights, ends_with("time"))
#選取變量名中包含“dep”的變量
select(flights, contains("time"))
#使用正則表達(dá)式選取變量名以“d”開頭的變量
select(flights, matches("^d"))
關(guān)于正則表達(dá)式的概念辩蛋,以后會(huì)詳細(xì)講解。
rename()
可直接對(duì)變量重命名移盆。如:
rename(flights, mon = month)
6.mutate
增加新的變量悼院。可對(duì)已有變量進(jìn)行數(shù)學(xué)計(jì)算后生成新變量咒循。
# 使用航班到達(dá)時(shí)間減去航班出發(fā)時(shí)間生成航班運(yùn)行時(shí)間變量据途。
mutate(flights, use_time = arr_time - dep_time)
transmute
只保留新生成的變量。如:
transmute(flights, use_time = arr_time - dep_time)
7.summaries
獲得變量的匯總統(tǒng)計(jì)結(jié)果(均值叙甸,最大值颖医,最小值,方差等)裆蒸,常和groupby一起使用熔萧,獲得不同分組的匯總統(tǒng)計(jì)結(jié)果
#計(jì)算航班平均延誤時(shí)間
summarise(flights, mean(dep_delay, na.rm=TRUE))
#計(jì)算航班每月的平均延誤時(shí)間
flights %>% group_by(month) %>% summarise( mean(dep_delay, na.rm=TRUE))
這里出現(xiàn)了一個(gè)新的符號(hào)%>%
,是dplyr專用的僚祷。我們稱之為管道符佛致,功能類似于shell中的|
,作用是講前面的變量傳遞到后面使用辙谜。
這個(gè)功能最大的好處是減少代碼運(yùn)行過程中生成的中間變量俺榆。
na.rm = TRUE
是R中常用的命令,在apply函數(shù)中也經(jīng)常用到装哆。作用是計(jì)算時(shí)不考慮缺失數(shù)據(jù)罐脊。