假設一個數據幀具有以下結構:乘法與條件
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和任務= = j,prod(x);
- 當id ==我和任務!= j,prod(y);
- 當id ==我,prod(y)。
then k = prod(x)* prod(y)/(1- prod(y))。這個方程中的第一個產品(y)來自條件2,第二個產品(y)來自條件3.
作爲一個例子,假設我想計算k [1](意味着id == 1,任務== 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]也表示id == 1和task == 1的條件,所以k [2] = k [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)不起作用?有人可以幫我嗎?
你能澄清你正在做什麼計算?給一些描述你最終結果的僞代碼會很有幫助。 如果我正確解釋你的問題,你的目標是計算:foreach id和任務組合:計算prod(x爲這個id和任務組合)* prod(y爲這個id,但不是這個任務)/(1 - Prod(y爲這個id))。 這是正確的嗎? – leif
是的!你是對的!這就是我想要做的。此計算以列數據結束,以便每個ID和任務組合具有唯一的計算值。 – Chen