Sam
Sam

Reputation: 8172

How do you combine multiple boxplots from a List of data-frames?

This is a repost from the Statistics portion of the Stack Exchange. I had asked the question there, I was advised to ask this question here. So here it is.

I have a list of data-frames. Each data-frame has a similar structure. There is only one column in each data-frame that is numeric. Because of my data-requirements it is essential that each data-frame has different lengths. I want to create a boxplot of the numerical values, categorized over the attributes in another column. But the boxplot should include information from all the data-frames.

I hope it is a clear question. I will post sample data soon.

Upvotes: 3

Views: 14948

Answers (3)

Chase
Chase

Reputation: 69151

Sam,

I'm assuming this is a follow up to this question? Maybe your sample data will illustrate the nuances of your needs better (the "categorized over attributes in another column" part), but the same melting approach should work here.

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")

Upvotes: 8

USER_1
USER_1

Reputation: 2469

Using the melt() function and base R boxplot:

#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)

Upvotes: 0

Bernd Elkemann
Bernd Elkemann

Reputation: 23550

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]))

With the "1"'s i select the column i want out of the data-frame.

A data-frames can not have different column-lengths (has to have same number of rows for each column), but you can tell boxplot to plot multiple datasets in parallel.

Upvotes: 1

Related Questions