【发布时间】:2013-02-02 22:25:49
【问题描述】:
我想计算 data.table 中几列中每一列的平均值,并按另一列分组。我的问题与其他两个关于 SO(one 和 two)的问题类似,但我无法将这些问题应用于我的问题。
这是一个例子:
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
【问题讨论】:
标签: r data.table