2016-08-30 97 views
-1

我打算用一個二元結果變量(0或1)繪製多個連續變量(大約20個變量)來繪製(箱線圖)。Ggplot:將多個連續變量與一個二元變量進行比較

數據:

ID outcome var1 var2 var3 var4 var5 
1  0  62 2.01 13  1.94 8 
2  0  150 4.32 9   99 6 
3  0  18 1.86 0.6  99 22 
4  0  60 4.08 3  -99 6 
5  1  20 1.96 1   99 14 
6  1  100 1.64 19  -99 3 

我的代碼:

tmp <- melt(data, id.vars=c("ID", "outcome")) 

p <- ggplot(data = tmp, aes(x=outcome, y= value)) + 
    geom_boxplot(aes(fill=Label)) 
p + facet_wrap(~ variable, scales="free") 

這個代碼顯示了以下錯誤:

Error in layout_base(data, vars, drop = drop) : At least one layer must contain all variables used for facetting

任何幫助將不勝感激。

+1

它將幫助,如果你在你的問題有你的數據集的一個例子。有關如何添加示例數據集的想法,請參見[此鏈接](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – aosmith

回答

0

這裏有幾個問題。

1)您沒有名爲Label的變量。

2)outcome是一個連續變量。

刪除Label,使outcome到的一個因素,代碼工作

ggplot(data = tmp, aes(x=as.factor(outcome), y= value)) + 
    geom_boxplot() + 
    facet_wrap(~ variable, scales="free") 

數據:

tmp <- structure(list(ID = c(1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 
5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 
3L, 4L, 5L, 6L), outcome = c(0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 
0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 
0L, 0L, 0L, 0L, 1L, 1L), variable = structure(c(1L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 
4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c("var1", "var2", 
"var3", "var4", "var5"), class = "factor"), value = c(62, 150, 
18, 60, 20, 100, 2.01, 4.32, 1.86, 4.08, 1.96, 1.64, 13, 9, 0.6, 
3, 1, 19, 1.94, 99, 99, -99, 99, -99, 8, 6, 22, 6, 14, 3)), row.names = c(NA, 
-30L), .Names = c("ID", "outcome", "variable", "value"), class = "data.frame") 
相關問題