2011-02-23 89 views
1

這是來自Stack Exchange統計部分的轉發。我在那裏問了這個問題,我被告知在這裏提出這個問題。所以在這裏。如何組合來自數據框列表的多個盒圖?

我有一個數據框的列表。每個數據幀具有相似的結構。每個數據框中只有一列是數字。由於我的數據要求,每個數據幀具有不同的長度是非常重要的。我想創建一個數值的boxplot,分類在另一列的屬性。但boxplot應該包含來自所有數據幀的信息。

我希望這是一個明確的問題。我將很快發佈樣本數據。

回答

6

山姆,

我假設這是一個後續行動this問題?也許你的樣本數據會更好地說明你需要的細微差別(「分類在另一列的屬性」部分),但同樣的方法應該在這裏工作。

library(ggplot2) 
library(reshape2) 
#Fake data 
a <- data.frame(a = rnorm(10)) 
b <- data.frame(b = rnorm(100)) 
c <- data.frame(c = rnorm(1000)) 

#In a list 
myList <- list(a,b,c) 


#In a melting pot 
df <- melt(myList) 

#Separate boxplots for each data.frame 
qplot(factor(variable), value, data = df, geom = "boxplot") 
#All values plotted together as one boxplot 
qplot(factor(1), value, data = df, geom = "boxplot") 
+1

難道你不能把這個列表融化嗎? – hadley 2011-02-23 20:43:15

+1

@hadley - 的確如此。我之前沒有專門使用'melt',所以感謝提示。將相應修改。 – Chase 2011-02-23 20:49:33

+0

確實是的,這是這個問題的後續。感謝您的編輯。 – Sam 2011-02-23 22:17:15

1
a<-data.frame(c(1,2),c("x","y")) 
b<-data.frame(c(3,4,5),c("a","b","c")) 
boxplot(c(a[1],b[1])) 

隨着「1」的選擇我想要出列數據框的列。

數據幀不能有不同的列長度(每列的行數必須相同),但可以指示boxplot並行繪製多個數據集。

+0

如果是直接從列表繪製該解決方案將無法工作。 – 2016-03-13 15:43:42

0

使用melt()功能和基礎R箱圖:

#Fake data 
a <- data.frame(a = rnorm(10)) 
b <- data.frame(b = rnorm(100)) 
c <- data.frame(c = rnorm(100) + 5) 

#In a list 
myList <- list(a,b,c) 

#In a melting pot 
df <- melt(myList) 

# plot using base R boxplot function 
boxplot(value ~ variable, data = df) 
相關問題