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合併 |