聚合数据表的各列

时间:2016-09-20 13:23:47

标签: r data.table

我的data.table看起来像

ID1 ID2 ID3 X1 X2 X3 X4 X5 ....
E01 ASD DSA 9  2  1  22 4
E03 SDF FDX 21 9  0  10 2
E04 MAX XXX 77 2  .5 23 1.5 ..

对于每个ID1(并且保持ID2和ID3不变),我想计算Xx的不同子组的平均值,输出应该看起来像

ID1 ID2 ID3 av_X1_X3 av_X4_X5   ...
E01 ASD DSA 4        13         ...
E03 SDF FDX 10       6

Xx的范围从X0到X90,我需要能够轻松输入三到五个可能的Xx分组。

1 个答案:

答案 0 :(得分:2)

您没有提及如何定义子组。如果您打算为每个子组手动执行此操作,这不应该太难输入

s <- "ID1 ID2 ID3 X1 X2 X3 X4 X5
E01 ASD DSA 9  2  1  22 4
E03 SDF FDX 21 9  0  10 2
E04 MAX XXX 77 2  .5 23 1.5"

dt <- fread(s)
dt[, av_X1_X3 := mean(c(X1, X3)), by = ID1]

在一行中添加更多列:

dt[, `:=`(av_X1_X3 = mean(c(X1,X3)), av_X4_X5 = mean(c(X4,X5))),by=ID1]