txt <- tibble::tribble(
~Subject,~variable,~value,
1, "xExp" , "Yes",
2, "xExp" , "No",
3 , "xExp" , "Yes",
4 , "xExp" , "Yes",
5 , "xExp" , "No",
1, "xDur" , "2",
2 , "xDur" , "NA",
3, "xDur" , "1",
4 , "xDur" , "10",
5 , "xDur" , "NA",
1 , "yExp" , "No",
2 , "yExp" , "No",
3 , "yExp" , "Yes",
4 , "yExp" , "Yes",
5 , "yExp" , "No",
1 , "yDur" , "NA",
2 , "yDur" , "5",
3 , "yDur" , "8",
4 , "yDur" , "2",
5 , "yDur" , "NA"
)
Интересно, это то, что вы ищете
library(tidyr)
library(dplyr)
library(ggplot2)
df <- txt %>%
mutate(variable=gsub("([[:lower:]])([[:upper:]][[:lower:]])", "\\1 \\2", variable)) %>%
separate(variable, into=c("xy", "what")) %>%
spread(what, value) %>%
readr::type_convert()
df
#> # A tibble: 10 x 4
#> Subject xy Dur Exp
#> * <dbl> <chr> <int> <chr>
#> 1 1 x 2 Yes
#> 2 1 y NA No
#> 3 2 x NA No
#> 4 2 y 5 No
#> 5 3 x 1 Yes
#> 6 3 y 8 Yes
#> 7 4 x 10 Yes
#> 8 4 y 2 Yes
#> 9 5 x NA No
#> 10 5 y NA No
Таким образом, график будет выглядеть так
ggplot(df)+
geom_col(aes(x=xy, y=Dur, fill=Exp))