データ フレームに次の構造があるとします。
x=c(1:18)
y=c(9:26)
k=c(NA)
id=c(1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3)
task=c(1,1,2,2,2,3,3,1,1,1,2,2,2,1,1,2,2,2)
alts=c(2,3,1,2,3,1,3,1,2,3,1,2,3,1,2,1,2,3)
data<-data.frame(id, task, alts, x, y, k)
ここで、x と y を異なる条件で乗算します。つまり、
- id==i かつ task==j の場合、prod(x);
- id==i および task!=j の場合、prod(y);
- id==i の場合、prod(y)。
k=prod(x)*prod(y)/(1-prod(y))。この式の最初の prod(y) は条件 2 から得られ、2 番目の prod(y) は条件 3 から得られます。
例として、k[1] (id==1 および task==1 を意味する) を計算したい場合、k[1]=(x[1] * x[2]) * (y[3] * y[4] * y[5] * y[6] * y[7]) / (1 - y[1] * y[2] * ... * y[7])。k[2]=k[1] データ内の k[2] は、id==1 および task==1 の条件も表すためです。
私が使用するコードは次のとおりです。
for (i in 1:3){ # for each individual
for(j in 1:3){ # for each task of each individual
data1=ddply(data, .(id, task), transform, k=prod(x[id==i & task==j])*prod(y[id==i & task!=j])/(1-prod(y[id==i])))
}
}
このコードを試しましたが、うまくいきませんでした。関数prod(x-condition 1)*prod(y-condition 2)/prod(y-condition 3)が機能しないのはなぜですか? 誰でも私を助けることができますか?