I'm writing a function to add a kruskal-wallis test AND dunn test to ggplot. In particular, I would like the following function to also work with tibbles but it only works for dataframes
library(rstatix)
library(ggpubr)
library(tidyverse)
plot_w_dunn <- function(dat, xvar, yvar) {
require("dplyr")
dat$var1 <- dat[,yvar]
dat$var2 <- dat[,xvar]
dat$var2 <- factor(dat$var2)
dunn_stat <- dat %>% dunn_test(var1 ~ var2, p.adjust.method = "hochberg")
dunn_stat <- dunn_stat %>% add_xy_position(x = "var2")
dunn_stat$p.adj.sci <- format(dunn_stat$p.adj, scientific = TRUE, digits = 3)
dunn_stat
print(dunn_stat)
plot <- ggplot(dat, mapping = aes(x = var2, y = var1, fill = var1)) +
geom_boxplot() +
stat_compare_means(method = "kruskal.test", label.y = 45, hjust = 0.5) +
stat_pvalue_manual(dunn_stat, label = "p.adj.sci", hide.ns = FALSE, inherit.aes = FALSE,
size = 3, step.increase = 0.05) +
labs(x = xvar, y = yvar)
return(plot)
}
plot_w_dunn(as_tibble(mtcars), "cyl", "mpg") #gives error
plot_w_dunn(mtcars, "cyl", "mpg") #works