在r中具有相同组的多个数据集中具有多个变量的箱线图

时间:2019-02-25 08:01:56

标签: r grouping boxplot

我在以相同顺序组织的2个不同数据集中有2个变量

df1:

LoopGW    NPV         Model
1          200         1
2          300         1

df2:

LoopGW    NPVadjusted        Model
1            300              3
2            400              3

我已经尝试过了:

boxplot(NPV ~ loopGW, data = df1)
boxplot(NPVadjusted ~ loopGW, data= df2, add = TRUE)

但是我得到的是重叠的箱线图。

enter image description here

我希望所有四个箱形图按模型分开并着色。谁能帮忙吗?非常感谢

1 个答案:

答案 0 :(得分:2)

您实际上并没有提供可复制的示例,因此我只是使用已有的示例。 希望它能做您想要的。可能会有更好的方法到达那里,但这就是我所做的:

library(tidyr)
library(ggplot2)

#read the data
df1 <- read.table(text = "
LoopGW    NPV         Model
1          200         1
2          300         1", stringsAsFactors = FALSE, header = TRUE)

df2 <- read.table(text = "
LoopGW    NPVadjusted        Model
1            300              3 
2            400              3", stringsAsFactors = FALSE, header = TRUE)

#preparing the data.frames for binding so no information gets lost.
d1g <- gather(df1, key = "NPV_flag", value = "NPV", -Model, -LoopGW)
d2g <- gather(df2, key = "NPV_flag", value = "NPVadjusted", -Model, -LoopGW)

#binding the two data.frames
d12g <- rbind(d1g, setNames(d2g, names(d1g)))

#create the groups after which to seperate
d12g$Model_Loop <- paste(d12g$Model, "_", d12g$LoopGW, sep = "")

#Model as factor
d12g$Model <- as.factor(d12g$Model)

#Plot with ggplot
ggplot(d12g, aes(x = Model, y = NPV, group = Model_Loop, color = Model)) + geom_boxplot()

这就是结果。您必须想象那里有4个漂亮的箱线图。 ^^

enter image description here

我希望这就是您想要的。 4个箱形图按回路和模型分开?并按模型着色。