r - 使用 Mann Whitney 创建 p 值列表

标签 r pairwise.wilcox.test

我正在寻找一种在 R 中使用 Mann Whitney Wilcox 测试编写 for 循环的方法。我在网上看到的命令是 wilcox.test() 。但我正在尝试对具有数千列的大型数据集这样做。我在网上没有找到任何其他资源的运气。

我有这个数据框 DF1,以及 DF1$Name 下的两个组(Sam 和 Anna)。对于此数据,需要使用两组的非参数方法,并且在比较两组(Sam 和安娜)。有没有有效的方法来做到这一点?

DF1:

<表类=“s-表”> <标题> 姓名 公司 商店 汽车 首页 <正文> 山姆 23 10 10 8 安娜 21 8 7 4 安娜 22 5 5 5 山姆 24 5 6 8 安娜 45 6 7 4

我的目标是获取生成的 p 值列表。任何建议,将不胜感激!谢谢!

# DF1
Name <- c("Sam", "Anna", "Anna", "Sam", "Anna")
Companies <- c(23, 21, 22, 24, 45)
Store <- c(10, 8, 5, 5, 6)
Cars <- c(10, 7, 5, 6, 7)
Home <- c(8, 4, 5, 8, 4)
DF1 <- data.frame(Name, Companies, Store, Cars, Home)

到目前为止我已经尝试过了,它肯定不起作用,但我觉得这是我想要得到的东西。下面的代码是测试的第一部分,源自 here 。但现在有一种方法可以在描述符旁边的列表中获取所有 p 值(公司、商店、汽车、家庭?)

DF1$Group <- as.factor(DF1$Name)

Z <- lapply(DF1[-1], function(x){
    wilcox.test(x ~ DF1$Name)
})

最佳答案

这是一种方法:

library(tidyverse)

DF1 %>% 
  select_if(is.numeric) %>%
  map_df(~ broom::tidy(wilcox.test(. ~ Name)), .id = 'var')
# A tibble: 4 × 5
  var       statistic p.value method                                            alternative
  <chr>         <dbl>   <dbl> <chr>                                             <chr>      
1 Companies       2     0.8   Wilcoxon rank sum exact test                      two.sided  
2 Store           2.5   1     Wilcoxon rank sum test with continuity correction two.sided  
3 Cars            2     0.767 Wilcoxon rank sum test with continuity correction two.sided  
4 Home            0     0.128 Wilcoxon rank sum test with continuity correction two.sided 

关于r - 使用 Mann Whitney 创建 p 值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75260867/

相关文章:

r - R-仅在具有混合类型的数据框中缩放数字值

r - 在 R 中使用 ggplot 扩展 x 限制

c++ - 将 double * 转换为 std::vector<double> 给我错误

r - 当无法确定 wilcox.test p 值时如何返回 "NA"(R)

r - 有没有办法应用按站点分组的 wilcoxon 测试?

c++ - Rcpp 可以公开一个引用同一类的 C++ 类方法吗?

r - 将查询嵌入到 R Shiny App 中的数据表显示

分组 R 威尔科克森检验

r - 由于 NA 多次运行时出现 Wilcox.test 错误(在 R 中使用 dplyr)