【发布时间】:2021-06-09 20:55:53
【问题描述】:
例如,我在 R 中有一个 data.table:
x <- data.table( id = c(1:10), count=c(10,110,20,30,5,40,50,15,20,70))
我想分别选择 id 的所有子集组合,其中 count 的行和在 90 到 110 之间。 一种组合是 105
id IN (1,3,4,5,6)
因为计数的总和是
x[id %in% c(1,3,4,5,6), sum(count)]
如何获得所有可能的组合?
【问题讨论】:
-
真正问题的规模有多大?蛮力方法可能适用于此,但不太可能适用于大数据。在您上面提出的问题中,有 1023 种可能的组合,但对于 20 个 ID 值,则超过一百万。
-
真正的问题是大约 1500 个 id。
-
您可能在这里问过一个比面向数据更数学的问题。我的建议是查看 CRAN 上的 'rfast' 库。也许这个功能:“行 - 明智的矩阵/向量计算一个值的频率”。可能有一个经过充分手工制作的优化 data.table 解决方案,但通常此类问题与一些众所周知的复杂数学运算有关,这些运算通常是特定库解决的。
标签: r data.table subset rowsum