2011-02-23 84 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) 
相关问题