2016-09-10 20 views
1

元の変数の3つのそれぞれの固有の組み合わせの合計である新しい変数を作成したいとします。データのrの変数のユニークな組み合わせの合計行

例:

df1 <- data.frame(A=c(1,2,3,5.5,5), B=c(2,2,2,2,0.5), C=c(1.5,0,0,2.1,3), D=c(0.2,1,2,1,0.8), E=c(0.4,0.6,0.2,1.1,2)) 

    A B C D E 
1 1.0 2.0 1.5 0.2 0.4 
2 2.0 2.0 0.0 1.0 0.6 
3 3.0 2.0 0.0 2.0 0.2 
4 5.5 2.0 2.1 1.0 1.1 
5 5.0 0.5 3.0 0.8 2.0 

私は3つの変数の各ユニークな組み合わせを使用して新しい列を作成したいと思います。例えば。私がきた他の質問から列A、Bを組み合わせてA、B、C、 'SUM2' A、B、Dを組み合わせて、 'SUM3' を組み合わせた 'SUM1' と呼ばれる新しい列、Eなどなど

A B C D E sum1 sum2 sum3 
1 1.0 2.0 1.5 0.2 0.4 3.5 3.2 3.4 
2 2.0 2.0 0.0 1.0 0.6 4.0 5.0 4.6 
3 3.0 2.0 0.0 2.0 0.2 5.0 7.0 5.2 
4 5.5 2.0 2.1 1.0 1.1 9.6 8.5 8.6 
5 5.0 0.5 3.0 0.8 2.0 8.5 6.3 7.5 

output <- combn(ncol(df1), 3, FUN = function(x) df1[x], simplify = FALSE) 

これは私の10のリスト(すべての組み合わせの数)を与える、と私は出力を使用して、選択した変数の各グループの[[1]]、出力を表示することができます。これは、ユニークな組み合わせを選択することを考え出しました[[2]]などですが、どのようにして各行を合計してデータフレームにするのですか?

はあなたが

答えて

1

我々はrowSumsを行うと、data.frameに変換することができ感謝し、元のデータセットと「出力」とcbindnamesを設定します。

output <- as.data.frame(combn(ncol(df1), 3, FUN =function(x) rowSums(df1[x]))) 
names(output) <- paste0("sum_", combn(names(df1), 3, FUN = paste, collapse="_")) 
cbind(df1, output) 
+0

素晴らしい!私はそれを働かせようとしていたが、何かが欠けていたに違いない。どうもありがとう。 – LvG

関連する問題