別の列でグループ化された、data.tableのいくつかの列のそれぞれの平均を計算したいと思います。私の質問は、SOに関する他の2つの質問(1つと2つ)に似ていますが、問題にそれらを適用できませんでした。
次に例を示します。
library(data.table)
dtb <- fread(input = "condition,var1,var2,var3
one,100,1000,10000
one,101,1001,10001
one,102,1002,10002
two,103,1003,10003
two,104,1004,10004
two,105,1005,10005
three,106,1006,10006
three,107,1007,10007
three,108,1008,10008
four,109,1009,10009
four,110,1010,10010")
dtb
# condition var1 var2 var3
# 1: one 100 1000 10000
# 2: one 101 1001 10001
# 3: one 102 1002 10002
# 4: two 103 1003 10003
# 5: two 104 1004 10004
# 6: two 105 1005 10005
# 7: three 106 1006 10006
# 8: three 107 1007 10007
# 9: three 108 1008 10008
# 10: four 109 1009 10009
# 11: four 110 1010 10010
各単一平均の計算は簡単です。例:「var1」の場合:dtb[ , mean(var1), by = condition]
。しかし、変数がたくさんあり、それらすべてを書く必要がある場合、これはすぐに面倒になります。したがって、dtb[, list(mean(var1), mean(var2), mean(var3)), by = condition]
望ましくありません。列名を動的にする必要があり、最終的には次のようになります。
condition var1 var2 var3
1: one 101.0 1001.0 10001.0
2: two 104.0 1004.0 10004.0
3: three 107.0 1007.0 10007.0
4: four 109.5 1009.5 10009.5