gpt4 book ai didi

r - 点击数据和索引的矩阵

转载 作者:行者123 更新时间:2023-12-04 11:58:38 25 4
gpt4 key购买 nike

我正在计算每个组的矩阵列的总和,其中相应的组值也包含在矩阵列中。目前我正在使用如下循环:

index <- matrix(c("A","A","B","B","B","B","A","A"),4,2)
x <- matrix(1:8,4,2)

for (i in 1:2) {
tapply(x[,i], index[,i], sum)
}

在一天结束时,我需要以下结果:
   1  2
A 3 15
B 7 11

有没有办法使用没有循环的矩阵运算来做到这一点?最重要的是,真实数据很大(例如 500 x 10000),因此它必须很快。

提前致谢。

最佳答案

这里有几个解决方案:

# 1
ag <- aggregate(c(x), data.frame(index = c(index), col = c(col(x))), sum)
xt <- xtabs(x ~., ag)

# 2
m <- mapply(rowsum, as.data.frame(x), as.data.frame(index))
dimnames(m) <- list(levels(factor(index)), 1:ncol(index))

第二个仅适用于 index 的每一列每个级别至少有一个,并且还要求至少有2个级别;然而,它更快。

关于r - 点击数据和索引的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7909273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com