【发布时间】:2021-12-10 12:59:15
【问题描述】:
我有一个列名显示分组信息的矩阵(下例中的组 A 和 B)。我想要的是对于每一行,使用属于每个组的列计算给定的汇总统计信息,例如平均值。示例代码如下:
#input data
data = matrix(1:100, 10, 10, byrow = T)
colnames(data) = rep(c("A", "B"), each = 5)
data
#calculation
result = t(apply(data, 1, function(x, label){aggregate(x, by=list(label), FUN=mean)$x}, label = colnames(data)))
result
有不同的方法可以做到这一点(比如 for 循环或使用应用,如上面的实现)。但是,当我在具有数百行和至少 10k 列的矩阵上使用此实现时,它的效率不是很高。我想知道是否有更快更有效的方法来实现这一点?我的输入数据格式是矩阵,所以任何基于其他数据类型实现的方法也需要考虑数据类型转换的时间。
【问题讨论】:
标签: r performance matrix grouping