Я хочу рассчитать среднее значение для каждого из нескольких столбцов в таблице data.table, сгруппированных по другому столбцу. Мой вопрос похож на два других вопроса о SO (один и два), но я не смог применить эти по моей проблеме.
Вот пример:
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