Rパッケージ(1) data.tableを利用したデータの読み込み・整形処理

Rでは「データフレーム」と呼ばれるExcelのワークシートのような行列形式のデータ構造を読み込むことができます。

 

Rではデフォルトで「read.table」関数が用意されており、テキストファイルからデータを読み込み、データフレームとしてファイルをインポートすることができます。

 

しかし、Rを使って大規模なデータをインポートする場合、「read.table」関数でファイルを読み込むと非常に時間がかかってしまうのがネックです。(インポートするファイルの大きさなどにも依存するが、10分以上かかることもある…。)

 

そこで、「data.table」パッケージの出番です!

 

このdata.tableパッケージを利用することで、例えば、前述したデータの読み込み速度はデフォルトの「read.table」と比較して10倍程度向上させることができます。それ以外にも、データの整形や集計などを高速で処理することのできる関数が用意されています。

 

似たようなパッケージとして「dplyr」がありますが、今回はRのデータフレームと似た機能を継承している「data.table」パッケージの使い方についてまとめてみたいと思います(データの読み込みと整形処理についてのみ)。

 

 (1)data.tableパッケージのインストール・インポート

 

(2)データフレーム(データテーブル)の作成 

data.frame()からできるデータフレームと、data.table()からデータテーブルは異なる型であることに注意。データを出力した時も形が少し異なります。 

 

(3)データのインポート

 データの取り込み方はdata.frame()とdata.table()とで変わりません。ただし、data.table()では「row.names」が指定できません。

 

(4)行の抽出

行の抽出方法に関しても、data.frame()とdata.table()とでほとんど変わりません。

 

(5)列の抽出 

列の抽出に関してはdata.table() ではdata.frame()と異なり、with=Fを指定しておかないといけません(理由はよく理解できてません…)。

stackoverflowでもおなじ質問があるのでこちらも参照。



(6)複数の表の結合

表を縦に並べて結合する場合は、data.frame()ではrbindを使って変数を指定、data.table()では上記のやり方に加えてrbindlistを使って変数のリストを指定する方法があります。

stackoverflowでrbindlistのほうが高速であるとの記述がありました。

表を横に並べて 結合する場合は、data.frame()とdata.table()のいずれもcbindでOKです。こちらもdata.table()に関しては、変数のリストも指定することができます。

 

(7)ヘッダーの変更

 ヘッダーの変更は、data.frame()では「names」もしくは「colnames」関数、data.table()では、「setnames」関数を用いて行うことができます。