R語言套件:data.table,可處理超過100gb大小資料

之前做需要幾萬次重複的資料處理時,使用dplyr基本的data.frame操作語法,單一個運算單位包含了多組的pipe操作,大約五萬次運算,加上一些平行語法,後來發現盡然會讓R吃的資源爆表,仔細研究才發現dplyr在執行多組data.frame運算,搭配上pipe時,其實會進行資料的copy,幾層下來,很容易讓吃的ram大增,所以需要找一種在運算上較乾淨的套件,同時也能做複雜資料操作,而data.table就是為這件事情而生的,他可以操作100gb大小的data.frame處理,對於此量級資料的join, order, update, delete都可以有很高速的表現,相對於dplyr將資料操作抽象成比較貼近人思考的select,filter,mutate,summarize等,data.table的語法更貼近SQL一點。

整個Data.Table的語法概念可以由下面一張圖直接解釋
screenshot.png

Take DT, subset rows using i, then calculate j grouped by by

Data.Table懶人表

閱讀參考:
[心得] 資料整理套件介紹-第一章 data.

有趣的各種data.table語法跟其他套件的比較
plyr::ddply vs data.table::rbindlist
R data.table – collating data
R data.table – subsets
R data.table – sum by groups
unnest in R data.table

datacamp的data.table語法整理
data.table cheat sheet

Frequently asked questions
Introduction to data.table
Keys and fast binary search based subset
Reference semantics
Efficient reshaping using data.tables
Secondary indices and auto indexing

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

w

連結到 %s