2011-04-26 23 views
3

我對R相當陌生,但我取得了很好的進步。除了一件事之外,我已經能夠將ggplot2彎曲成我的意志:分類標籤沿着我的boxplot中的x軸繪製的順序。我認爲這只是在我的如何解決在公式中數據幀的範圍知識孔,但這裏的假數據,爲數據幀稱爲DF:如何按一個行的子集的平均值對數據框排序?

Index Label Value 
index1 A  1 
index2 A  2 
index3 A  3 
index4 B  12 
index5 B  11 
index6 B  10 
index7 C  8 
index8 C  7 
index9 C  9 
... 
index76 Z  15 
index77 Z  17 
index78 Z  16 

我的陰謀代碼看起來像qplot(df$Label, df$Value, data=df) + scale_x_discrete("Label") + opts(axis.text.x = theme_text(angle = 90, hjust = 0, size=7)) + geom_boxplot()並給我到底我想要什麼,這是一個boxplot顯示一個盒子&針對標籤A,一個針對B和一個針對C.然而,軸的順序是標籤(1,2,3的盒圖最接近中間10,11,12,圖右側7,8,9)。我想要的是boxplot數據從標籤平均值最高的子集開始,然後按降序進行。我可以通過mean(df$Label[1:3])mean(df$Label[4:6])等在每個標籤的平均值,但我不知道如何讓圖顯示,使標籤的圖不會按照它們出現在factor(df$Label)(即A,B,C沿帶有框的x在2,11,8),但是按照最高標籤內平均值到最低值(即B,C,A沿着x和框,然後在11,8,2)。

我想我會創建一個由每個標籤內平均值組成的矢量,並以某種方式將其傳遞給ggplot以指定軸順序,但我無法弄清楚如何創建矢量以開始。

我需要知道的是:

什麼是得到由每個標籤的平均值的矢量的最佳方式,以便從最高到最低? 如何傳遞載體ggplot使其訂單減少這些值x軸,同時還與factor(df$Label)

我接受其他方式來顯示數據以及建議標籤x軸,但我覺得我非常接近我想要的&平均值&給定標籤內的值的傳播很重要。

+0

我要澄清,在值值是不以任何方式獨特 - 有很多重疊的。 – 2011-04-26 01:49:55

回答

5

這裏是一個辦法做到這一點

# create a dummy data frame 
set.seed(1234) 
df = data.frame(
     label = rep(letters[1:3], each = 3), 
     value = sample(100, 9)) 

# boxplot without sorting 
qplot(label, value, data = df, geom = 'boxplot') 

enter image description here

# boxplot with label sorted by median of value 
qplot(reorder(label, value, median), value, data = df, geom = 'boxplot') 

enter image description here

+0

好吧,看看那個。事實證明R有一個簡單的功能來完成我在答案中描述的令人討厭的手動過程。 – 2011-04-26 02:41:52

+0

這很好,拉姆納特,謝謝! – 2011-04-26 03:04:39

+0

''''''''''''是另一個方便的功能在你的武器庫中。 – Chase 2011-04-26 03:42:00

0

Label是一個因素。嘗試as.numeric(df$Label)查看該因子的每個級別對應的數字。 ggplot2可能使用其數字級別順序中的標籤。您可以通過將levels參數傳遞給factor來訂購係數的級別。例如,如果按照要求的順序將矢量中的每個標籤按ordered.levels=c("B","C","A",...)的順序排列,則可以通過轉換爲caracter並返回,以明確的levels參數:df$Label <- factor(as.character(df$Label), levels=ordered.levels)「重新排序」標籤。

所有這一切都假定ggplot2使用水平的數值來排序圖。

+0

標籤確實是一個因素。我會試試的,瑞恩,謝謝。 – 2011-04-26 01:49:27

+0

去使用Ramnath的答案。事實證明,有一個「重新排序」功能,可以或多或少地描述我所描述的功能。 – 2011-04-26 02:42:28

相關問題