データのマッチング

Rにて、a$key1、b$key1、b$dataとあったとして、b$dataをkey1ごとに平均し、a$key1にマッチするように新しい列a$data1に入れる方法。

tmp_b_data<-aggreagate(b$data,by=b$key1,mean)
a$data<-tmp_b_data[match(a$key1,tmp_b_data[,1]),2]

とする。
最初の行でtmp_b_dataにkey1ごとでまとめた平均をいれ、それからmatchするものを取ってくる。

いたってシンプルだけど、他に色々試した方法よりも早く中々使い勝手が良い。