[英]R box plot using factors in multiple columns
我正在尝试使用R箱图可视化我的数据,并被卡住。 我的数据如下所示:
id var.1 var.2 ... var.n value
a 0 1 ... 2 1.7
b 2 1 ... 0 1.4
... ... ... ... ... ...
a 1 2 ... 2 5.3
b 1 2 ... 1 2.4
现在,我想进行一系列箱形图绘制:value_var.1,value_var.2,...,value_var.n最好是ggplot2方面类型图。 我使用融化,重塑和分裂的尝试失败了-希望有个清醒的人在这里给出提示...
我想重塑的数据应采用以下形式:
a var.1 0 1.7
a var.2 1 1.7
...
b var.1 2 1.4
b var.2 1 1.4
...
这样我就可以使用第2列和第3列的交互...
数据
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
(此外,语法合成不是不言自明的,每次使用语法时我都需要反复试验):
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)
这是否回答你的问题?
也可以使用融化功能:
library(reshape2)
melt(dat, id='value')
value variable value
1 -0.11978146 var.1 1
2 -0.78996525 var.1 1
3 0.54246428 var.1 1
4 0.09325227 var.1 1
5 0.63954407 var.1 1
6 1.48611802 var.1 1
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.