【发布时间】:2017-07-27 02:53:00
【问题描述】:
我很困惑为什么我不能通过 data.table 中的 mean() 获得每一行的平均值。
> aaa <- data.table(matrix(1:9, nrow = 3))
> aaa[, `:=` (avg = mean(V1 + V2 +V3), onethird = (V1 + V2 +V3)/3)]
> aaa
V1 V2 V3 avg onethird
1: 1 4 7 15 4
2: 2 5 8 15 5
3: 3 6 9 15 6
似乎 data.table 所做的是 mean(V1) + mean(V2) + mean(V3) 而不是 mean(V1 + V2 +V3)。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
其实我想通过计算其他列的平均值来生成更多的列,比如从V1和V2得到avg12,从V3、V4和V5得到avg345。
> aaa <- data.table(matrix(1:10, nrow = 2))
> aaa[, `:=` (avg12 = (V1 + V2)/2, avg345 = (V3 + V4 + V5)/3)]
> aaa
V1 V2 V3 V4 V5 avg12 avg345
1: 1 3 5 7 9 2 7
2: 2 4 6 8 10 3 8
是否可以在 (V1 + V2) 或 (V1, V2) 上使用一些简单的均值函数?
【问题讨论】:
-
aaa[, V1 + V2 + V3]给出c(12,15,18)- 其平均值为15 -
谢谢,@thelatemail。现在我意识到 mean() 只适用于单列。
-
@DavidArenburg - '为什么 mean() 不能跨 data.table 中的行聚合?也许?
标签: r data.table aggregate