首页 > 解决方案 > 在位置拆分 data.table

问题描述

我想通过使用行号或带有位置的向量以 data.table 方式计算列的平均值。

这是一个样本数据和一个位置向量:

x <- data.table(a = c(1,2,3,4,5,6,7,8))
pos <- c(3,5)

我试过:

x[mean(a), by = pos]

所以我想要第 1:2、3:4 和 5:8 行的平均值。

标签: rdata.table

解决方案


这是一个选项:

x[, mean(a), cumsum(replace(rep(0, nrow(x)), pos, 1L))]

输出:

   cumsum  V1
1:      0 1.5
2:      1 3.5
3:      2 6.5

推荐阅读