这是我的简化数据集:
foo <- data.frame(var1= c(1:10), var2=rep(1:5,2),var3=rep(1:2,5),var4=rep(3:7,2) )
共有20个变量
foo
var1 var2 var3 var4 ... var20
1 1 1 1 3
2 2 2 2 4
3 3 3 1 5
4 4 4 2 6
5 5 5 1 7
6 6 1 2 3
7 7 2 1 4
8 8 3 2 5
9 9 4 1 6
10 10 5 2 7
我需要获得3个变量的独特组合及其每个时期的总和
即。 ......好像
var1var2var3 var1var3var4 var1var5var18 etc...
1 6 sum
2 6
3 7
4 10
5 11
6 9
7 10
8 13
9 14
10 17
请注意var1var3var5与var3var1var5
相同答案 0 :(得分:7)
正如@Chase建议的那样,combn
可以获得你想要的东西:
nams <- apply( combn(colnames(foo),3), 2, function(z) paste(z, collapse = ''))
cols <- combn( ncol(foo), 3)
tripleSums <- apply( cols, 2, function(z) rowSums(foo[,z]))
colnames(tripleSums) <- nams
> tripleSums
var1var2var3 var1var2var4 var1var3var4 var2var3var4
[1,] 3 5 5 5
[2,] 6 8 8 8
[3,] 7 11 9 9
[4,] 10 14 12 12
[5,] 11 17 13 13
[6,] 9 10 11 6
[7,] 10 13 12 7
[8,] 13 16 15 10
[9,] 14 19 16 11
[10,] 17 22 19 14