R语言dplyr包的学习
dplyr包可以看作是plyr包的一個(gè)擴(kuò)展,主要是針對(duì)數(shù)據(jù)框的數(shù)據(jù)操作。
在使用dplyr包中的函數(shù)對(duì)數(shù)據(jù)框進(jìn)行操作之間,最好將其轉(zhuǎn)換為tbl對(duì)象:tbl_df()
一個(gè)很好的效果是,tbl對(duì)象可以根據(jù)顯示空間大小來(lái)進(jìn)行部分顯示。
利用dplyr包常見(jiàn)的數(shù)據(jù)操作可歸納為以下5種:
1. 篩選 filter()
按給定的邏輯判斷篩選出符合要求的子數(shù)據(jù)集, 返回符合條件的子數(shù)據(jù)集的行。類似于 base::subset() 函數(shù)
filter(.data, ...) .data為數(shù)據(jù)集,...為邏輯判斷條件,多個(gè)參數(shù)條件相當(dāng)于and連接
此外,... 還有一些特殊用法:
==,>,>= 等
&,|,!,xor()
is.na(),colname %in% c("factor1","factor2")
between(),near()
2. 排列 arrange()
按給定的列名依次對(duì)行進(jìn)行排序.這個(gè)函數(shù)和 plyr::arrange() 是一樣的, 類似于 order()
arrange(.data, ...) ... 一串逗號(hào)分割無(wú)引號(hào)的列名。默認(rèn)升序,可利用desc()進(jìn)行降序
3. 選擇 select()
用列名作參數(shù)來(lái)選擇子數(shù)據(jù)集,類似于R自帶的 subset() 函數(shù)
select(.data, ...) ...是無(wú)引號(hào)一系列的以逗號(hào)分割的表達(dá)式??梢允橇忻?/p>
此外,... 還有一些特殊用法:
starts_with(x,ignor.case = TRUE) # 選擇以字符x開(kāi)頭的變量
ends_with(x,ignore.case = TRUE) # 選擇以字符x結(jié)尾的變量
contains(x,ignore.case = TRUE) #選擇所有包含x的變量
matches(x,ignore.case = TRUE) #選擇匹配正則表達(dá)式的變量
num_range(“x”,1:5,width = 2) #選擇從x01到x05的數(shù)值型變量
one_of(“x”,”y”,”z”) #選擇包含在聲明變量中的變量
everything() #選擇所有變量,一般調(diào)整數(shù)據(jù)集中變量順序時(shí)使用
- #排除列名
: #mpg : disp也就相當(dāng)于2:4,選擇從mpg到disp的所有列
另外,select還可用于改列名。
select(iris, petal_length = Petal.Length)
相當(dāng)于rename(iris, petal_length = Petal.Length)
只是,select返回的是所選中的列,而rename返回的是所有列。
4. 擴(kuò)展 mutate()
對(duì)已有列進(jìn)行數(shù)據(jù)運(yùn)算并添加為新列,并保留原始變量。作用與 plyr::mutate() 相同, 與base::transform() 相似, 優(yōu)勢(shì)在于可以在同一語(yǔ)句中對(duì)剛增加的列進(jìn)行操作。而同樣操作用R自帶函數(shù) transform() 的話就會(huì)報(bào)錯(cuò)
mutate(.data, ...) ... 名字-值的成對(duì)表達(dá)式,利用colname=NULL扔掉變量
此外,... 還有一些特殊用法:
+,- 等
log()
lead(),lag()
dense_rank(), min_rank(), percent_rank(), row_number(), cume_dist(), ntile()
cumsum(), cummean(), cummin(), cummax(), cumany(), cumall()
na_if(), coalesce()
if_else(), recode(), case_when()
另注意:mutate添加新變量并保留原變量;而transmute扔掉原始變量。
同時(shí)與之比較相關(guān)的函數(shù)有mutate_all(),mutate_at(),mutate_if()
類似的有:transmute_all(),transmute_at(),mutate_if()
summarise_all(),summarise_at(),summarise_if()
group_by_all(),group_by_at(),group_by_if()
5. 匯總 summarise()
對(duì)數(shù)據(jù)框調(diào)用其它函數(shù)進(jìn)行匯總操作, 返回一維的結(jié)果,等同于 plyr::summarise(),
summarise(.data, ...) ... 名字-值的表達(dá)式,值是匯總函數(shù)
此外, ... 還有一些特殊用法:
Center: mean(), median()
Spread: sd(), IQR(), mad()
Range: min(), max(), quantile()
Position: first(), last(), nth(),
Count: n(), n_distinct()
Logical: any(), all()
其實(shí),summarise()常被用于匯總經(jīng)group_by后的分組數(shù)據(jù),并且每個(gè)組輸出一行
分組操作 group_by()
根據(jù)某些變量進(jìn)行分組。
group_by(.data, ..., add = FALSE) ... 用于分組的變量,add=false,覆蓋現(xiàn)有組,true在現(xiàn)有組基礎(chǔ)上添加
與之對(duì)應(yīng)的還有,去除分組ungroup(x,...)
總結(jié)
以上是生活随笔為你收集整理的R语言dplyr包的学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。