Итак, вот способ, которым вы можете сделать необходимое;
Сначала мы создадим данные, которые у вас есть;
library(tidyverse)
# Creating first dataframe
C <-
data.frame(
KGE_M1 = runif(3, 0, 0.5),
NSE_M1 = runif(3,0,0.5),
R_Sq_M1 = runif(3,-1,0.3),
PBIAS_M1 = runif(3, -0.25, 0.25),
KGE_M2 = runif(3, 0.2, 0.7),
NSE_M2 = runif(3,0.2,0.7),
R_Sq_M2 = runif(3,-0.5,0.7),
PBIAS_M2 = runif(3, -0.15, 0.15),
KGE_M3 = runif(3, 0.3, 0.8),
NSE_M3 = runif(3,0.3,0.8),
R_Sq_M3 = runif(3,0.3,0.8),
PBIAS_M3 = runif(3, -0.10, 0.10),
KGE_M4 = runif(3, 0.5, 1),
NSE_M4 = runif(3,0.5,1),
R_Sq_M4 = runif(3,0.5,1),
PBIAS_M4 = runif(3, -0.05, 0.05),
Cal = rep("Calibration", 3),
stringsAsFactors = FALSE)
# Creating second dataframe
V <-
data.frame(
KGE_M1 = runif(3, 0, 0.5),
NSE_M1 = runif(3,0,0.5),
R_Sq_M1 = runif(3,-1,0.3),
PBIAS_M1 = runif(3, -0.25, 0.25),
KGE_M2 = runif(3, 0.2, 0.7),
NSE_M2 = runif(3,0.2,0.7),
R_Sq_M2 = runif(3,-0.5,0.7),
PBIAS_M2 = runif(3, -0.15, 0.15),
KGE_M3 = runif(3, 0.3, 0.8),
NSE_M3 = runif(3,0.3,0.8),
R_Sq_M3 = runif(3,0.3,0.8),
PBIAS_M3 = runif(3, -0.10, 0.10),
KGE_M4 = runif(3, 0.5, 1),
NSE_M4 = runif(3,0.5,1),
R_Sq_M4 = runif(3,0.5,1),
PBIAS_M4 = runif(3, -0.05, 0.05),
Val = rep("Validation", 3),
stringsAsFactors = FALSE)
Теперь мы изменим формат данных и визуализируем их;
# Rename the variable to make it same
C <- rename(C, Identifier = Cal)
V <- rename(V, Identifier = Val)
data <-
# First we bind the two datasets
bind_rows(C, V) %>%
# We convert from wide format to long format
gather(key = "Variable", value = "Value", -Identifier) %>%
# We separate Variable into 2 columns at the last underscore
separate(Variable, into = c("Variable", "Number"), sep = "_(?=[^_]+$)")
data %>%
ggplot()+
geom_boxplot(aes(x = Number, y = Value,
group = interaction(Identifier, Number), fill = Identifier)) +
facet_wrap(~Variable)
![enter image description here](https://i.stack.imgur.com/WdoeZ.png)