dplyr的出現就是要補足plyr的不足,下面以dplyr解決的資料處理問題來分組:
p.s 裡面很多概念,其實很難直接英翻中,所以這整理只是強迫自己把所有函數想過一遍xd
漂亮的cheatsheet可以直接到Rstudio官網去下載
資料查看 | |
glimpse | 查看當前資料的內容,print在指令行 |
View | 使用spread-sheet來看資料 |
資料取子集:可分為針對row(observation),或是針對column(columns)的取法 | |
filter | 篩選符合logic criteria的特定row |
distinct | 移除重複的rows |
sample_frac | 隨機選取特定比例的rows |
sample_n | 隨機選取特定數量的rows |
slice | 選定特定位置的rows |
top_n | 選定特定"排序"位置的rows |
資料運算總結(summarise) | |
summarise | 針對特定colum資料運算總結成single value |
summarise_each | 使用"summary functions"來針對每一個column作運算 |
count | 針對特定條件計算其數量 |
產生新的變數(column) | |
mutate | 藉由計算本有的column,來產生新的variable |
mutate_each | 使用"window function"針對每一個column |
transmutate | 藉由計算本有的column來“取代”原本的column |
分組使用的函數 | |
group_by | 將資料針對特定row來分組,以便於進行後續的分組“summarise” |
ungroup | 取消分組 |
兩組資料的彙整,在觀念可以區分成:mutating joins, filtering joins, set operations, binding | |
將兩個data.frame不同的值合併(mutating joins) | |
left_join(x,y, by="col1″) | 將兩個data.frame以特定column為基準,由y合併入x |
right_join(x,y, by="col1″) | 將兩個data.frame以特定column為基準,由x合併入y |
inner_join(x,y, by="col1″) | 將兩個data.frame以特定column為基準,兩者都有的合併在一起 |
full_join(x,y, by="col1″) | 將兩個data.frame以特定column為基準全部合併 |
針對特定的row來取值合併(filtering joins) | |
semi_join(x,y,by="col1″) | 將x中特定row值有對應到y的某一個column合併在一起 |
anti_join(x,y,by="col1″) | 將x中特定row值沒有對應到y的某一個column篩選下來 |
將兩個data.frame做交聯差集的處理(Set Operation) | |
intersect(x,y) | 取x,y兩個data.frame中都有的rows |
union(x,y) | 取x,y兩個data.frame兩者都有的做聯集 |
setdiff(x,y) | 取出現在x中但沒有出現在y中的row |
將兩個data.fram合併(Binding) | |
bind_rows | 針對row合併 |
bind_cols | 針對column合併 |