2017-05-08 44 views
1

我有兩個數據幀。它們的長度不同。帶有不同長度列的箱形圖B/W兩個數據幀

df1: 
Samples Number 
A9GS  73 
A9GY  142 
ASNO  327 
A5UE  131 

df2: 
Samples Number 
AUFS  107 
A9JY  42 
AKNO  32 
A9FE  111 
A9GY  12 
ADNO  37 
A2KE  451 

我對此做了wilcoxon測試。

wilcox.test(df1$Number,df2$Number, correct=FALSE) 

這給了我p值。爲了可視化這個,我使用了盒子繪圖函數並給出瞭如下錯誤。

boxplot(df1$Number ~ df2$Number, xlim=c(0.5,3)) 
Error in model.frame.default(formula = df1$Number ~ df2$Number) : 
    variable lengths differ (found for 'df2$Number') 

任何人都可以糾正我的錯誤,並告訴我如何獲得p值的情節。謝謝

回答

1

只有當這些公式與數據框1-1配對(RHS通常是組變量而不是數字組)時才能使用公式,這顯然沒有。你需要使用列表傳遞系統而不是公式之一。我會看看我是否可以構建一個工作示例。

該地塊與實現:

png(); boxplot(list(df1_N=df1$Number, df2_N = df2$Number)); dev.off() 

enter image description here

而註釋可以與text功能,它接受通常與bquote構造的?plotmath參數來完成。

text(1.5, 400, 
    label=bquote( 
     p~value == .(wilcox.test(df1$Number,df2$Number, correct=FALSE)$p.value) 
    )) 

如果你想圓p值使用round(...)周圍的表達.( ) -function

+0

錯誤wilcox.test.default(df1_N = DF1 $號碼,df2_N = DF2 $號碼,正確= FA LSE): 參數「x」丟失,沒有默認值 – raju

+0

您忘記將兩個參數放在列表中。 –

+0

好的。有效。謝謝 – raju

0

內只要把兩個數據幀在一起,然後p值粘貼到情節:

df1 <- data.frame(samples = c('A9GS', 'A9GY', 'ASNO', 'ASUE'), 
         number = c(73, 142, 327, 131)) 
df2 <- data.frame(samples=c('AUFS', 'A9JY', 'AKNO', 'A9FE', 'A9GY', 'ADNO', 
           'A2KE'), 
         number = c(107, 42, 32, 111, 12, 37, 451)) 

df1$group <- 'df1' 
df2$group <- 'df2' 

df <- rbind(df1, df2) 

m<-wilcox.test(df1$number,df2$number, correct=FALSE) 

library(ggplot2) 
jpeg('path/to/where/you/want/the/file/saved/picture.jpeg') 
ggplot(df, aes(x=group, y=number, group=group)) + 
    geom_boxplot() + 
    annotate('text', label=paste('p =', round(m$p.value, 2)), x=.5, y=400) 
dev.off() 

產量: enter image description here

+0

Thankyou。我的df1有70個樣本,df2是258.我怎樣才能保存這麼大的情節? – raju

+0

我也想看看在boxplot x軸上的哪個數據幀df1或df2 – raju

+0

我已經編輯了我的答案,包含將保存圖像並在x軸上寫入數據幀名稱的代碼。 – triddle

相關問題