#r #ggplot2 #facet-wrap #ggpubr
Вопрос:
Я пытаюсь создать функцию, которая отображала бы мои данные на графике. Данные обобщают значения, измеренные после лечения в нескольких экспериментах в контрольной и обработанной группах. Лечение может быть разным в разных экспериментах. Я хотел бы получить график, сравнивающий вручную различные эксперименты (путем огранки), а также показывающий значения p для попарного сравнения контрольной группы с различными методами лечения.
Вот пример:
set.seed(1)
library(ggplot2)
library(ggpubr) ## calculates the statistics for the graph
library(dplyr)
##creating dataset
exp1<-data.frame(exp = "exp1",
treatment = rep(c("control", "drug A", "drug B", "drug C"), 10),
result = runif(40, min =1, max = 10))
exp2<-data.frame(exp = "exp2",
treatment = rep(c("control", "drug A"), 10),
result = runif(20, min =1, max = 10))
exp3<-data.frame(exp = "exp3",
treatment = rep(c("control", "drug A", "drug C"), 10),
result = runif(30, min =1, max = 10))
data<-bind_rows(exp1, exp2, exp3)
##function for graphing the data
graph<-function(data, col_Name) {
treatment<-as.character(unique(data$treatment)) ## in the real dataset the treatment is an ordered factor, so use as.character here
g<-ggplot(data, aes(x=treatment, y = data[,col_Name], fill = treatment))
geom_boxplot(color = "black", alpha = 0.3)
geom_dotplot(binaxis = "y", stackdir = "center", dotsize = 2, color = "black")
facet_wrap(~exp, nrow = 1) #facetting the data
stat_compare_means(method = "t.test", aes(label = ..p.format..),
comparisons = mapply(c, "control", treatment[2:length(treatment)], SIMPLIFY = F) ) ### with mapply I create the list of pairwise comparisons I want to have
return(g)
}
graph(data, "result")
[![введите описание изображения здесь][1]][1]
Вот что я получаю до сих пор: [1]: https://i.stack.imgur.com/3qJnd.png
Проблема в том, что он показывает статистику только тогда, когда в эксперименте участвуют все 4 группы. Я бы хотел, чтобы функция каким-то образом для любого данного аспекта (то есть для каждого отдельного эксперимента) пропускала группы, в которых отсутствуют данные в этом примере, отображала группы с данными и вычисляла статистику для попарных сравнений с контрольной группой.
Мне интересно, как указать/пропустить группы с отсутствующими данными специально для каждого аспекта, чтобы показать статистику в каждом из них ?
Большое спасибо! Лучше всех!