R で rbindlist を使用して複数のデータテーブルを作成する方法


R のrbindlist()関数を使用すると、多くの data.table または data.frame オブジェクトのリストから data.table を作成できます。

この関数は次の基本構文を使用します。

 rbindlist(l, use. names ="check", fill= FALSE , idcol= NULL )

金:

  • l : data.table、data.frame、または list オブジェクトを含むリスト。
  • use.names : TRUE は列名によってバインドします。 FALSE は位置によってバインドします。
  • fill : TRUE は欠損値を NA で埋めます。
  • idcol : これらの行がどのリスト項目に由来するかを示す列を作成します。

次の例は、この関数を実際に使用する方法を示しています。

例: rbindlist を使用してデータテーブルを作成する

R に次の data.table オブジェクトと data.frame オブジェクトのリストがあるとします。

 library (data.table)

#create data frames and data tables
data1 <- data. table (team=c('A', 'B', 'C'),
                    dots=c(22, 27, 38))

data2 <- data. table (team=c('D', 'E', 'F'),
                    dots=c(22, 14, 20))

data3 <- data. frame (team=c('G', 'H', 'I'),
                    dots=c(11, 15, 18))

#view data frames and data tables
print (data1)
print (data2)
print (data3)

   team points
1: At 22
2:B27
3: C 38
   team points
1:D22
2:E14
3:F20
  team points
1 G 11
2:15 a.m.
3 I 18

次のrbindlist()関数を使用して、data.table オブジェクトと data.frame オブジェクトのリストを単一の data.table にバインドできます。

 #define list of objects to bind together
data_list <- list(data1, data2, data3)

#bind together list of objects
big_data <- rbindlist(data_list)

#view result
big_data

   team points
1: At 22
2:B27
3: C 38
4:D22
5:E14
6:F20
7:G 11
8:15 a.m.
9: I 18

結果は、提供したオブジェクトのリストの行で構成される 9 行を含む data.table オブジェクトです。

class()関数を使用して、結果が実際に data.table オブジェクトであることを確認することもできます。

 #view class of resulting object
class(big_data)

[1] "data.table" "data.frame"

結果は実際に data.table オブジェクトであることがわかります。

rbindlistを使用する利点

rbindlistを使用する代わりに、ベース R の rbind 関数でdo.callを使用することもできます。

 #use rbind to bind together list of objects
do. call (" rbind ", data_list)

   team points
1: At 22
2:B27
3: C 38
4:D22
5:E14
6:F20
7:G 11
8:15 a.m.
9: I 18

このコードは同じ結果を生成しますが、特に非常に大きな data.table または data.frame オブジェクトの場合、 rbindlist の方が大幅に高速であることがわかります。

追加リソース

次のチュートリアルでは、R で他の一般的な操作を実行する方法について説明します。

R でテーブルをデータ フレームに変換する方法
R でデータ フレームに行を追加する方法
Rでデータフレームを分割する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です