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