R语言dplyr包的学习
dplyr包可以看作是plyr包的一個擴展,主要是針對數據框的數據操作。
在使用dplyr包中的函數對數據框進行操作之間,最好將其轉換為tbl對象:tbl_df()
一個很好的效果是,tbl對象可以根據顯示空間大小來進行部分顯示。
利用dplyr包常見的數據操作可歸納為以下5種:
1. 篩選 filter()
按給定的邏輯判斷篩選出符合要求的子數據集, 返回符合條件的子數據集的行。類似于 base::subset() 函數
filter(.data, ...) .data為數據集,...為邏輯判斷條件,多個參數條件相當于and連接
此外,... 還有一些特殊用法:
==,>,>= 等
&,|,!,xor()
is.na(),colname %in% c("factor1","factor2")
between(),near()
2. 排列 arrange()
按給定的列名依次對行進行排序.這個函數和 plyr::arrange() 是一樣的, 類似于 order()
arrange(.data, ...) ... 一串逗號分割無引號的列名。默認升序,可利用desc()進行降序
3. 選擇 select()
用列名作參數來選擇子數據集,類似于R自帶的 subset() 函數
select(.data, ...) ...是無引號一系列的以逗號分割的表達式。可以是列名
此外,... 還有一些特殊用法:
starts_with(x,ignor.case = TRUE) # 選擇以字符x開頭的變量
ends_with(x,ignore.case = TRUE) # 選擇以字符x結尾的變量
contains(x,ignore.case = TRUE) #選擇所有包含x的變量
matches(x,ignore.case = TRUE) #選擇匹配正則表達式的變量
num_range(“x”,1:5,width = 2) #選擇從x01到x05的數值型變量
one_of(“x”,”y”,”z”) #選擇包含在聲明變量中的變量
everything() #選擇所有變量,一般調整數據集中變量順序時使用
- #排除列名
: #mpg : disp也就相當于2:4,選擇從mpg到disp的所有列
另外,select還可用于改列名。
select(iris, petal_length = Petal.Length)
相當于rename(iris, petal_length = Petal.Length)
只是,select返回的是所選中的列,而rename返回的是所有列。
4. 擴展 mutate()
對已有列進行數據運算并添加為新列,并保留原始變量。作用與 plyr::mutate() 相同, 與base::transform() 相似, 優勢在于可以在同一語句中對剛增加的列進行操作。而同樣操作用R自帶函數 transform() 的話就會報錯
mutate(.data, ...) ... 名字-值的成對表達式,利用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扔掉原始變量。
同時與之比較相關的函數有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()
對數據框調用其它函數進行匯總操作, 返回一維的結果,等同于 plyr::summarise(),
summarise(.data, ...) ... 名字-值的表達式,值是匯總函數
此外, ... 還有一些特殊用法:
Center: mean(), median()
Spread: sd(), IQR(), mad()
Range: min(), max(), quantile()
Position: first(), last(), nth(),
Count: n(), n_distinct()
Logical: any(), all()
其實,summarise()常被用于匯總經group_by后的分組數據,并且每個組輸出一行
分組操作 group_by()
根據某些變量進行分組。
group_by(.data, ..., add = FALSE) ... 用于分組的變量,add=false,覆蓋現有組,true在現有組基礎上添加
與之對應的還有,去除分組ungroup(x,...)
總結
以上是生活随笔為你收集整理的R语言dplyr包的学习的全部內容,希望文章能夠幫你解決所遇到的問題。