我正在寻找一种在 R 中使用 Mann Whitney Wilcox 测试编写 for 循环的方法。我在网上看到的命令是 wilcox.test() 。但我正在尝试对具有数千列的大型数据集这样做。我在网上没有找到任何其他资源的运气。
我有这个数据框 DF1,以及 DF1$Name 下的两个组(Sam 和 Anna)。对于此数据,需要使用两组的非参数方法,并且在比较两组(Sam 和安娜)。有没有有效的方法来做到这一点?
DF1:
我的目标是获取生成的 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/