我嘗試重新說明我的問題。 我有以下數據框架,bb1,並且我正在使用dply中的dcast進行烘焙。在這個例子中,我想通過「條件」(主題條件)來計算每個「主題」在「rt」列中有多少obersvations,但我只想要具有滿足條件的「z.score」的觀察值cretain條件。在下面的例子中,我使用了abs(z.score)> 1.5,但有時它會是1.5,有時是1,有時是2. 1.5僅僅是一個例子。同樣在下面的示例中,我計算長度,但是我還希望能夠計算平均值(例如,對於具有「z.score」的觀測值,「條件」對於每個「主體」的「rt」 「> 1.5,所以長度只是一個例子)。如何在使用dcast時獲取每個ID的value.var?
require(reshape2)
require(dplyr)
bb1 = data.frame(subject=c(99,99,99,99,99,11,11,11), rt=c(100,150,2,4,10,15,1,2), ac=rep(1,8),
condition=c(1,1,2,4,3,3,4,4), z.score=c(0.2,0.3,0.2,0.3,0.3,0.2,0.2,0.2))
> bb1
# subject rt ac condition z.score
# 1 99 100 1 1 0.2
# 2 99 150 1 1 0.3
# 3 99 2 1 2 0.2
# 4 99 4 1 4 0.3
# 5 99 10 1 3 0.3
# 6 11 15 1 3 0.2
# 7 11 1 1 4 0.2
# 8 11 2 1 4 0.2
bb1 %>%
group_by(subject, condition) %>%
summarise(n = length(rt[abs(z.score) > 1.5])) %>%
dcast(subject ~ condition, value.var = "n")
# subject 1 2 3 4
# 1 11 NA NA 0 0
# 2 99 0 0 0 0
我的問題是,如果我想爲每個主題計算value.var =「n」,應該如何使用dcast部分?而不是每個主題的條件?我希望在整個條件下獲得每個主題的value.var。這個acutally意味着我想要計算每一行的邊距。但是我不想獲得value.var作爲主題條件,我只想獲得邊距(即,獲取每個主題在整個條件下的value.var)並將其保存爲data.frame。 在BB1上面我想獲得這樣的
# subject rt
# 1 11 0
# 2 99 0
Becaude這兩個問題(即,被檢體11和99科目)沒有任何的滿足z.score限制條件的意見,我兩者都需要得到0。
我希望我的問題現在好一點
任何幫助將不勝感激。 謝謝 Ayala
你可能想要在你的例子中工作......你所有的'z.score'都是0.2或者0.3,但是你的條件是'> 1.5'。你可以用'n = sum(abs(z.score)> 1.5)'來簡化你的'summarise'。但考慮到你的1.5門檻,你的輸出是正確的。 – Gregor 2014-12-03 17:17:46
你可以添加一個你想要的輸出樣子的例子嗎?可能你想添加行邊界(將'margins =「condition」'添加到'dcast'),或者你想要'dcast(subject〜。,value.var =「n」)''? – aosmith 2014-12-03 17:44:15
@aosmith我重申了我的問題。我嘗試了dcast(subject〜。,value.var =「n」),但他們我得到2和4(分別用於主題11和99),我應該得到0,因爲在所有條件下他們沒有觀察那符合我的z.score限制 – ayalaall 2014-12-04 08:49:36