指定された各グループの変数を計算するために data.table を使用したいと思います。簡単にするために、データが x1 のグループに従って分割されているとしましょう。
x1 x2
a 3
a 4
b 1
b 5
そして、各グループの平均値の変数を作成したいのですが、各グループにインデックスを付ける方法がわかりません:
DT[,list(
mean_a=mean(x2) #for all rows containing "a"
mean_b=mean(x2) #for all rows containing "b"
by="x1")]
コメントで行を書き直すにはどうすればよいですか? (つまり、「a」を含むすべての行の平均を見つけます。「b」も同じです)
さらに処理されるため、個別の列に data.table として出力する必要があります。
mean_a mean_b
3.5 3
編集:それで遊んだ後、ここに私が望んでいた解決策があります。
> DT2=DT[,list(
+ mean_a=mean(x[grep("a",x1),x2]),
+ mean_b=mean(x[grep("b",x1),x2])),
+ by=NULL]
>
> DT2
mean_a mean_b
1: 3.5 3
これは Frank のものほど効率的ではありませんが、最初に私が求めていたものです。つまり、行をコメントで書き直しました。