数据
set.seed(1)
dat <- do.call(cbind.data.frame, rep(list(gl(3, 10)), 5))
names(dat) <- paste("var", 1:5, sep = ".")
dat$value <- rnorm(30)
head(dat)
# var.1 var.2 var.3 var.4 var.5 value
# 1 1 1 1 1 1 -0.6264538
# 2 1 1 1 1 1 0.1836433
# 3 1 1 1 1 1 -0.8356286
# 4 1 1 1 1 1 1.5952808
# 5 1 1 1 1 1 0.3295078
# 6 1 1 1 1 1 -0.8204684
方法
首先,我们需要将数据转换成ggplot
可以方便地工作的东西。你可以使用reshape
从基础包(addmitedly,该syntay是不言自明的,我需要做的我使用的语法尝试和错误每次):
datm <- reshape(dat, direction = "long", varying = paste("var", 1:5, sep = "."),
new.row.names = 1:((ncol(dat) - 1) * nrow(dat)), timevar = "i",
v.names = "x")
head(datm)
# value i x id
# 1 -0.6264538 1 1 1
# 2 0.1836433 1 1 2
# 3 -0.8356286 1 1 3
# 4 1.5952808 1 1 4
# 5 0.3295078 1 1 5
# 6 -0.8204684 1 1 6
现在,你可以做你的boxplot(value ~ x)
通过的ggplot2
方式:
library(ggplot2)
ggplot(datm, aes(x = x, y = value)) + geom_boxplot() + facet_wrap(~i)
是否回答你的问题?
我将两个答案结合起来,是的,它现在可以工作!需要更多地使用reshape2。掌握有用的东西。 – kiero 2014-10-28 15:56:20