次の 2 つのデータ テーブルがあるとします。
dt1 <- data.table(id=1:3,val1=c("a","a","b"),key="id")
# id val1
# 1: 1 a
# 2: 2 a
# 3: 3 b
dt2 <- data.table(id=c(1:3,1:2),val2=10:14,key="id")
# id val2
# 1: 1 10
# 2: 1 13
# 3: 2 11
# 4: 2 14
# 5: 3 12
dt1
それが their によって識別される人々 のリストでid
ありdt2
、これらの同じ人々に関する観察のリストであり、特派員 であるとしましょうid
。
val2
ここで、の各グループのの平均を計算したいと思いval1
ます。私は次の方法でそれを行うことができることを理解しました:
dt1[dt2][,mean(val2),by=val1]
# val1 V1
# 1: a 12
# 2: b 12
しかし、FAQ (セクション 1.14) も読んだことがありますが、これは効率的ではありません (少なくとも非常に大きなデータ テーブルの場合)。
それで、それを行うためのより良い、より効率的な方法はありますか?
編集:別の関連する質問:次の2行で同じ結果が得られることがわかりました:
dt1[dt2][,mean(val2),by=val1]
dt2[dt1][,mean(val2),by=val1]
それらは同等ですか、それとも2つに違いはありますか?