gpt4 book ai didi

r - 按单列聚合稀疏矩阵

转载 作者:行者123 更新时间:2023-12-04 12:17:42 24 4
gpt4 key购买 nike

我有一个非常大的稀疏矩阵,如下所示:

 client item_1 item_2 item_3.... item_n
a 1 0 0 0
a 0 0 1 0
b 0 1 0 0
b 1 0 0 0

等等……

我想按客户列汇总矩阵以获得:

client item_1 item_2 item_3.... item_n
a 1 0 1 0
b 1 1 0 0

我曾尝试转换回密集矩阵,然后进行聚合,但遇到了内存问题。

我的数据看起来像

new("dgCMatrix"
, i = c(0L, 1L, 2L, 3L, 0L, 3L, 2L, 1L)
, p = c(0L, 4L, 6L, 7L, 8L, 8L)
, Dim = 4:5
, Dimnames = list(NULL, c("client", "item_1", "item_2", "item_3", "item_n"
))
, x = c(1, 1, 2, 2, 1, 1, 1, 1)
, factors = list()
)

最佳答案

稀疏矩阵的矩阵乘法解题(你的矩阵是b):

fac2sparse(b[,1]) %*% b[,-1]

不同之处在于客户列现在作为行名称找到。

通过单个阶乘变量聚合是更高级问题的特例,可以通过包 SSBtools 中的函数解决:

clientFrame <- as.data.frame(as.matrix(b[, 1, drop = FALSE]))
# Two lines below are both same as fac2sparse(b[,1]) %*% b[,-1]
t(FormulaSums(clientFrame, ~client - 1)) %*% b[, -1]
t(Hierarchies2ModelMatrix(clientFrame, list(client = ""))) %*% b[, -1]
# Two lines below add overall totals
t(FormulaSums(clientFrame, ~client)) %*% b[, -1]
t(Hierarchies2ModelMatrix(clientFrame, list(client = "Total"))) %*% b[, -1]

关于r - 按单列聚合稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46305659/

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