2016-07-06 31 views
0

我有一個數據框中的1700個樣本的列表,其中每行表示每個助理在隨機數量不同的盒子中的樣本中計數的多彩物品的數量。有兩種可用的顏色和兩個人計算物品,因此這可以很容易地創建一個2x2應急表。在數據幀行中計算Fisher的精確測試p值

df 
Box-ID 1_Red 1_Blue 2_Red 2_Blue 
1  1075 918  29  26 
2  903 1076 135 144 

我想知道如何可以在爲了進行卡方檢驗(如Fisher的或巴納德)對待每行作爲列聯表(無論是矢量或矩陣),並生成具有p第六列 - 值。 這是我到目前爲止已經試過,但我不知道這是否是正確的

df$p-value = chisq.test(t(matrix(c(df[,1:4]), nrow=2)))$p.value 
+0

首先,有'?fisher.test'在R以及。你需要把你的代碼放在一個'apply'語句中,以便它作用於每行​​,比如'apply(df [-1],1,function(x)....)'其中'x'是4個數字在每行中可以放入矩陣中。 – thelatemail

+0

即使使用apply()或(),2x2矩陣的生成仍然是個問題。 –

回答

2

我想你可以做這樣的事情

df$p_value <- apply(df,1,function(x) fisher.test(matrix(x[-1],nrow=2))$p.value) 
相關問題