R的列和产品的组合

时间:2017-01-22 19:25:37

标签: r combinations

我有以下数据:

1*5*9
1*5*10
1*5*11
...
1*6*9
1*6*10
...
3*4*11

我需要生成列A,B和C的值的所有可能组合,并将它们的值相乘。也就是说,

{{1}}

此外,一旦我将这些组合相乘,我就必须根据变量Id(及其总和)添加产品。例如,如果我乘以组合1(A)* 5(B)* 10(C),则乘积对应于Ids:0(A),0(B),1(C),sum = 1 。此产品应添加到产品1(A)* 6(B)* 9(C)中,对应于Ids:0(A),1(B),0(C),其中sum = 1。你能有效地做到吗?可能的组合数量可能非常高。

亲切的问候,

Majesus

1 个答案:

答案 0 :(得分:0)

试试这个:

df.grid = cbind( expand.grid(df[,rep(1,3)]), prod=apply(expand.grid(df[,2:4]), 1, prod))

> aggregate( prod ~ I(Id + Id.1 + Id.2), df.grid, sum)
#   I(Id + Id.1 + Id.2) prod
# 1                   0   45
# 2                   1  194
# 3                   2  521
# 4                   3 1056
# 5                   4 1523
# 6                   5 1738
# 7                   6 1479
# 8                   7  892
# 9                   8  352