これが作成するものに似たデータフレームがあります:
dummy=data.frame(c(1,2,3,4),c("a","b","c","d"));colnames(dummy)=c("Num","Let")
dummy$X1=rnorm(4,35,6)
dummy$X2=rnorm(4,35,6)
dummy$X3=rnorm(4,35,6)
dummy$X4=rnorm(4,35,6)
dummy$X5=rnorm(4,35,6)
dummy$X6=rnorm(4,35,6)
dummy$X7=rnorm(4,35,6)
dummy$X8=rnorm(4,35,6)
dummy$X9=rnorm(4,35,6)
dummy$X10=rnorm(4,35,6)
dummy$Xmax=apply(dummy[3:12],1,max)
実物だけざっくり260×13000セル
私が目指しているのは、data[x:x] で定義された一連の列の各行に以下の式を実装することです (例では、列のダミー [3:12] 内のもの)。
TSP = Sum( (1-(Xi/Xmax)) /(n-1))
ここで、Xi は対象の行内および列内の個々の値です ( iは各列を意味します。つまり、各行に X1、X2、X3... の値があります)。Xmax は、行 (dummmy$Xmax 列で定義)、n は選択された列の数です (例の場合: n=10)。実際のデータ セットでは、26 列を選択します。
この計算を実行し、各行の値を dummy$TSP という列に格納し、13000 行すべてに対して行う、きちんとした小さな関数を作成したいと思います。
1つの大まかな解決策は次のとおりですが、私が言ったように、これをある種のきちんとした関数に入れたいと思います。そこでは、列を選択でき、残りは(ほぼ)自動です。
dummy$TSP<- ((((1-(dummy$X1/dummy$Xmax))/(10-1))
+(((1-(dummy$X2/dummy$Xmax))/(10-1))
...
+(((1-(dummy$X10/dummy$Xmax))/(10-1)))
プロセスをよく説明する回答も本当にありがたいので、事前に感謝します!