假设一个数据框具有以下结构:
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,第二个 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)不起作用?有人可以帮帮我吗?