R中列、列和乘积的组合

R中列、列和乘积的组合,r,combinations,R,Combinations,我有以下数据: data.frame(Id=c(0,1,2,3),A=c(1,2,3,4),B=c(5,6,7,8),C=c(9,10,11,NA)) 我需要生成所有可能的值组合​​并将其值相乘。就是说, 1*5*9 1*5*10 1*5*11 ... 1*6*9 1*6*10 ... 3*4*11 此外,一旦我将组合相乘,我必须根据变量Id(及其总和)添加乘积。例如,如果我将组合1(A)*5(B)*10(C)相乘,则乘积对应于id:0(A)、0(B)、1(C),总和=1。此乘积应添加到乘积

我有以下数据:

data.frame(Id=c(0,1,2,3),A=c(1,2,3,4),B=c(5,6,7,8),C=c(9,10,11,NA))
我需要生成所有可能的值组合​​并将其值相乘。就是说,

1*5*9
1*5*10
1*5*11
...
1*6*9
1*6*10
...
3*4*11
此外,一旦我将组合相乘,我必须根据变量Id(及其总和)添加乘积。例如,如果我将组合1(A)*5(B)*10(C)相乘,则乘积对应于id:0(A)、0(B)、1(C),总和=1。此乘积应添加到乘积1(A)*6(B)*9(C)中,该乘积对应于ID:0(A)、1(B)、0(C),总和=1。你怎样才能有效地做到这一点?可能的组合数量可能非常高

亲切问候,

Majesus

试试这个:

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