diff --git a/NEWS.md b/NEWS.md index f0c2629..947b465 100644 --- a/NEWS.md +++ b/NEWS.md @@ -21,7 +21,7 @@ ## Bug fixes - +- `compare_means()`: works now when the grouping variable levels contain the key words group2 or group1 (#450) # ggpubr 0.5.0 diff --git a/R/compare_means.R b/R/compare_means.R index 291500f..150f29a 100644 --- a/R/compare_means.R +++ b/R/compare_means.R @@ -338,11 +338,11 @@ compare_means <- function(formula, data, method = "wilcox.test", pvalues <- suppressWarnings(do.call(test, test.opts)$p.value) %>% as.data.frame() - group1 <- group2 <- p <- NULL - pvalues$group2 <- rownames(pvalues) + ..group1.. <- ..group2.. <- p <- NULL + pvalues$..group2.. <- rownames(pvalues) pvalues <- pvalues %>% - tidyr::gather(key = "group1", value = "p", -group2) %>% - dplyr::select(group1, group2, p) %>% + tidyr::gather(key = "..group1..", value = "p", -..group2..) %>% + dplyr::select(group1 = ..group1.., group2 = ..group2.., p) %>% dplyr::filter(!is.na(p)) pvalues } diff --git a/tests/testthat/test-compare_means.R b/tests/testthat/test-compare_means.R index 5008460..5c23d1c 100644 --- a/tests/testthat/test-compare_means.R +++ b/tests/testthat/test-compare_means.R @@ -124,3 +124,34 @@ test_that("compare_means works for kruskal.test", { expect_equal(results, expected) }) + +test_that("compare_means works when grouping variable levels contain group2", { + tibble::tribble( + ~val, ~gp, ~by, + 923 , 'group4','V1', + 1252, 'group4','V1', + 1442, 'group4','V1', + 1398, 'group2','V1', + 1858, 'group2','V1', + 1330, 'group2','V1', + 2593, 'group2','V1', + 23 , 'group4','V2', + 252, 'group4','V2', + 442, 'group4','V2', + 398, 'group2','V2', + 858, 'group2','V2', + 330, 'group2','V2', + 593, 'group2','V2' + ) %>% dplyr::mutate(gp=factor(gp, levels = c('group2','group4'))) -> dat + + results <- compare_means(val ~ gp, data = dat, group.by = 'by', paired = F) + results <- results %>% + dplyr::select(.y., group1, group2, p.format, p.signif, method) + expected <- tibble::tribble( + ~.y., ~group1, ~group2, ~p.format, ~p.signif, ~method, + "val", "group2", "group4", "0.23", "ns", "Wilcoxon", + "val", "group2", "group4", "0.23", "ns", "Wilcoxon" + ) + expect_equal(results, expected) +}) +