Example data frame:
a <- c(1, 0, 1)
b <- c(0, 1, 0)
c <- c(1, 0, 1)
total <- c(100,200,300)
my.data <- data.frame(a, b, c, total)
> my.data
a b c total
1 1 0 1 100
2 0 1 1 200
3 1 0 1 300
I would like to create one single boxplot to show the distribution of "total" for each column: a, b, c but only consider those with value = 1. Example: Column a's row 2 is ignore because it is 0, so column a has a distribution of 100 and 300. Column B has a distribution of 200 and column c has a distribution of 100,200,300.
I can plot them separately:
ggplot(subset(my.data,a==1), aes(x=a,y=total)) +
geom_boxplot()
ggplot(subset(my.data,b==1), aes(x=b,y=total)) +
geom_boxplot()
ggplot(subset(my.data,c==1), aes(x=c,y=total)) +
geom_boxplot()
I also tried the following, but it's not correct:
ggplot(my.data, aes(x=as.factor(c("a","b","c")),y=total)) +
geom_boxplot()
Hoping there is an awesome R function/method that let me do my plot in one shot. Don't think I can use melt() because of the Total column. Thanks in advance.
Edited: Apparently, I should/can use melt(), just need to use it correctly.