2016-09-13 86 views
0

我有一個包含不同類別的數據集。假設A,B,C和D.在ggplot2小提琴中繪製兩個類別R

這是該數據集的樣子

 V1 V2 V3 
    1 NA 1 0.1 
    2 2 2 0.2 
    3 3 NA 0.1 
    4 4 4 0.3 
    5 NA NA 0.4 
    6 NA NA 0.8 
    7 7 7 0.2 
    8 NA 8 0.1 
    9 9 NA 0.6 
    10 NA NA 0.1 

,該行:

V1列不是NA是A類

V2列不是NA是B類

(V1列不是NA OR V2列不是NA)是在C類中

所有在該數據幀的線是在類別d

在上述例子的情況下:有落入A和C在同一時間(例如3行)線。第1行應在B類和C類中。因此,類別C的數量可能少於A + B的數量。所有10行都屬於D類。

我想用ggplot2根據V3中的值繪製類別A,B,C和D的小提琴圖。 (X軸爲A B C D,Y軸爲V3)

有人得到提示嗎?我試過,但ggplot2似乎不能處理重疊的類別。如果數據有另一列指定的類別,這將很好地工作:

 V1 V2 V3 Group 
    1 NA 1 0.1  B 
    2 2 2 0.2  C 
    3 3 NA 0.1  A 
    4 4 4 0.3  C 
    5 NA NA 0.4  D 
    6 NA NA 0.8  D 
    7 7 7 0.2  C 
    8 NA 8 0.1  B 
    9 9 NA 0.6  A 
    10 NA NA 0.1  D 

將有4小提琴,但在每把小提琴只有條目僅在該類別中。重疊的不會被考慮在內。

有沒有辦法在ggplot2中繪製重疊類別?或者有沒有辦法將來自不同數據框的不同類別繪製成一個小提琴情節?或者你是否建議繪製原始數據集的4個子集並將四個小提琴圖組合在一起?

非常感謝!

+0

這種相當屬於[datascience.se]。 – phk

+0

通過添加類別列的處理器(如awk)來管理數據。顯然你可以繪製結果。就像'awk -f awkscript datafile | ggplot -'可能工作 – roaima

+0

是的,我可以添加一個組列。但問題是C類可能與A/B重疊。我無法找到一種方法來顯示類別A中的項目,也使用ggplot2小提琴圖表在類別C中顯示項目。 –

回答

0

構建您想要的類別相當容易。

數據:

dd <- read.table(text=" 
    NA 1 0.1 
    2 2 0.2 
    3 NA 0.1 
    4 4 0.3 
    NA NA 0.4 
    NA NA 0.8 
    7 7 0.2 
    NA 8 0.1 
    9 NA 0.6 
    NA NA 0.1") 

轉化:

dd$Group <- with(dd, 
    ifelse(is.na(V1) & is.na(V2),"D", 
     ifelse(!is.na(V1) & !is.na(V2),"C", 
       ifelse(is.na(V1),"B","A")))) 
+0

嗨本,謝謝你的回覆!在你的代碼中,你是否考慮過類別C是V1和V2不是NA的行?但我希望類別C是(V1!=「NA」**或** V2!=「NA」)。這意味着可能與C類和A/B有重疊。 –