我的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分组。
答案 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]